2011-05-24 64 views
0

我知道extern C意味着函數應該用C風格編譯,但是extern function_datatype函數名是什麼意思?你能解釋一下extern的意思和其他一些東西嗎?

extern void sharelog(const char *rem_host, const char *username, 
     const char *, const char *, 
     const char *, const char *); 

沒有「C」的extern是什麼意思?

此外,幾乎在每一個程序的頭文件,我看到沿着爲什麼,如果它在.C/.cpp文件已經完成再次聲明函數

void sharelog(const char *rem_host, const char *username, 
     const char *, const char *, 
     const char *, const char *); 

線的東西? 它有時也被宣佈沒有它的說法只是

int Function; 

此外,一些功能可以這樣寫:

int CSomething::Somefunction() const 

爲什麼功能後,加上const的?

我也偶然發現其中有這些神祕點

void function(int prio, const char *fmt, ...) 

有很多其他的事情我也想問的功能,但它似乎我已經問就夠了。 我知道你們中的一些人可能會說去學習C/C++,但是相信我,這些東西不是爲初學者討論的。

+6

你真的應該拆分此成多個問題,這是相當惱人的嘗試回答一個n路的問題。 – unwind 2011-05-24 09:01:26

+0

而你的問題只是遠程相關的。他們真的應該是單獨的問題。 – 2011-05-24 09:03:19

+0

@unwind:另外,您不能將其作爲其他4個問題的重複關閉。 – 2011-05-24 09:13:36

回答

1

extern沒有"C"來自C++之前的版本,當你需要一種方式告訴C編譯器一個函數「可以在某處」使用時,它應該允許鏈接器找出它。

聲明extern允許編譯器將函數添加到已知名稱列表中,即使它不能解析地址。

相關問題