關於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 申明本地...