推 LPH66:感覺有點畫蛇添足...函式宣告都是 extern 啊 08/12 00:37
→ azureblaze:大概為了某個沒有extern的奇怪compiler吧? 08/12 00:45
推 Bencrie:用來宣告 declspec 好像比較合適?用來切換 08/12 00:51
→ Bencrie:dllimport/dllexport 這樣 08/12 00:51
→ LPH66:不過單純切換 extern 的就很詭異了 08/12 01:44
→ GNUGCC:這個用法比較有可能是 xxx.cpp 有 void FUNCTION(void){} 08/12 22:07
→ GNUGCC:的實體,所以 include "xxx.h" 遇到函式原型就不需加上 08/12 22:09
→ GNUGCC:extern,編譯器能判斷屬內部連結,那其他 .cpp 檔如果 08/12 22:10
→ GNUGCC:include "xxx.h" 而沒有 void FUNCTION(void){} 實體的話, 08/12 22:10
→ GNUGCC:就會遇到 extern void FUNCTION(void); 的定義了,編譯器會 08/12 22:12
→ GNUGCC:把呼叫 FUNCTION() 函式的敘述交給 Linker 來處理,而不用等 08/12 22:13
→ GNUGCC:到全部 .cpp 檔編譯完後發現沒有 FUNCTION 實體才交給 08/12 22:14
→ GNUGCC:Linker 處理外部連結,純粹是編譯效率的考量. 08/12 22:15
→ littleshan:No, 這邊有沒有 extern 對 compiler 來說完全沒差 08/12 23:09
→ EdisonX:我覺得切 extern "C" 之類的 declspec 應比較合適? 08/12 23:25
→ suhorng:推 extern "C" 08/12 23:38
推 LPH66:不過這裡的用法顯然不是要切換 extern "C" 08/13 00:47
→ LPH66:不然要檢查的巨集就不該是 _XXX_CPP_ 而是 __cplusplus 了 08/13 00:47
→ LPH66:再說要在 header 裡弄只給 C++ 看的 extern "C" 沒那麼費工 08/13 00:48