Q:在多文件的項目中,一個文件用到了另一個文件中定義的函數,此時既可以用extern來引用該函數,又可以#include 另一個文件使得編譯通過。請問這兩種方式本質有什么不同?
A:
1L
本質上沒太大區別,在include的文件(頭文件)里也是用extern來聲明的.
但用include文件有很多優點:
當用到多個外部變量或函數的時候,
extern:在每個用到的文件中需要用多個extern 聲明;
include:只需要在include各聲明一次,其它使用這些變量的只需要包含該頭文件即可.
2L
extern 函數,
include 對應頭文件 ...
include 對應的 c 文件是不可取的方式 ..
3L
有點的。如果沒有說錯。
include頭文件的變量在各自的cpp里面,是獨立的。不會有互相的影響的。
extern聲明,在到處的值都是一樣的。
4L
事實上,extern void fun(); 中的extern 也是可以取消的,只是加上它更明確一些而已。
extern void fun();
void fun();都表示函數聲明,這和變量不同。
5L
最好用include,這樣程序更清晰,更容易維護
6L
大體上,你可以把extern 和 include 的區別當做是“零售”與“批發”的區別。include是批發,而extern 則是零售。