預編譯語句在C和C 中的不同之處

2021-08-25 12:38:48 字數 589 閱讀 9844

#ifndef a

#define a

...int i;

...#endif

include "a.h"

...incldue "a.h"

...

將b.c和c.c編譯後鏈結時,按照c++進行鏈結,出現變數重複定義的錯誤;而按照c進行鏈結,則成功。

結論:在c++中,當你使用include 「a.h」的b.c檔案生成b.obj的時候,int i 在裡面定義了。當另外乙個include ""a.h"的c.c生成c.obj的時候,int i 又被定義。然後兩個obj連線在一起時,就會出現重複定義。

在c中,遇到多個int i,則自動認為其中乙個是定義,其他的是宣告。

猜測:在進行編譯的時候,c++語言將全域性變數預設為強符號。c語言則依照是否初始化進行強弱的判斷。

標頭檔案中只宣告;在原始檔中定義。

#ifndef a

#define a

...extern int i;

...#endif

int i;

static 在c 和c 中的不同之處

一言以蔽之 static 變數作用域都很長,該函式該變數只能在本檔案之中用,最大的區別在於c 中的static 屬於類內部成員不是說哪個物件的,就死不定義這個類的物件它已經存在了!static主要有三個作用 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 前兩種c和c 都有,...

C 與C語言的不同之處

本文介紹了c 與c語言的不同之處。常見區別 庫函式 c stdio.h c iostream 輸入 c scanf c cin 輸出 c printf c cout 動態開闢 c malloc c new 釋放 c free c delete 以上是比較常見之處。下面是我在學習c 中認識到的內容 內...

C語言和C 中const的不同之處

includeint main 檔案中 include demo.cpp 可不用包含 int main 檔案中 pp檔案中 include demo.cpp 必須包含 int main pp檔案中 const int a 10 不行需要寫 extern const int a 10 include ...