extern關鍵字總結

2021-07-31 14:07:31 字數 2683 閱讀 2583

關於extern關鍵字總結

1.extern的變數的原先定義的地方不能有static修飾

2.如果宣告是const int,那麼extern也必須是extern const int

3.兩個.cpp檔案不能定義同乙個變數名

4.標頭檔案基本可以說是不能定義變數的,否則只要有多個cpp檔案包含了該標頭檔案,就一定出錯,同理也基本不能定義普通函式

5.發現了乙個很坑的地方,每個檔案內部都可以定義一次同乙個類以及成員函式,但是成員函式必須要包括在類的宣告裡面,而不能拿出來定義,這樣的話c++就很不仗義了呀,更坑的是還允許至多乙個檔案把成員函式定義到類的宣告外面。

/*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

***> file name: a.cpp

> author:

> mail:

> created time: sat 29 apr 2017 04:36:18 pm cst

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*******/

#include "a.h"

class c ;

c::c(int c)

void c::test()

void test();

//int c;

int main()

/*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

***> file name: a.h

> author:

> mail:

> created time: sat 29 apr 2017 05:05:02 pm cst

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*******/

#ifndef _a_h

#define _a_h

#include

using namespace std;

extern const int d;

extern int c;

inline int test2()

/*int test2() */

//int c; //如果有這樣的語句,且標頭檔案被多個不同的檔案包含,就必定出錯

#endif

/*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

***> file name: b.cpp

> author:

> mail:

> created time: sat 29 apr 2017 04:37:40 pm cst

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*******/

#include "a.h"

#include

using namespace std;

int c = 12345;

class c

void test()

private:

int c;

};/*c::c(int c) */

const int d = 10;

void test()

#makefile

a : a.o b.o

g++ a.o b.o -o a

a.o : a.cpp a.h

g++ a.cpp -c

b.o : b.cpp a.h

g++ b.cpp -c

clean :

rm a.o b.o a

extern關鍵字講解

基本解釋 extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告 e...

關鍵字 extern 使用

在c語言中,修飾符extern用在變數或者函式的宣告前,用來說明 此變數 函式是在別處定義的,要在此處引用 1.extern修飾變數的宣告。舉例來說,如果檔案a.c需要引用b.c中變數int v,就可以在a.c中宣告extern int v,然後就可以引用變數v。能夠被其他模組以extern修飾符引...

extern 關鍵字用法

overrides public virtual bool initinstance extern 摘自 extern lpdirectdraw4 lpdd 宣告lpdd,但是不分配記憶體,只說明他是你可以用的變數,在此程式之外其他的程式中已經聲名了他。其實他就是防止名字衝突 extern 申明本地...