2012-05-02 34 views
0

我有一個關於C++編譯器的問題。C++編譯器 - 常見符號

確切地說,C++編譯器會創建一個公共符號嗎?使用C編譯器,我可以爲目標文件提供通用符號,但如果我使用C++編譯器(GNU)編譯完全相同的代碼,則只能獲取已定義和未定義的符號。

所以問題是什麼情況會導致變量/函數在C++中被編譯爲常見?

回答

1

其中一些從來沒有做過。最近很受歡迎的Watcom C++編譯器大量使用通用符號來節省內聯函數實例。有各種各樣的extern案件也可以用這種方式經濟地解決。

+0

謝謝。我試圖總結對象符號類型,並且我需要一個可以編譯爲常見的例子,所以我想我不能在這種情況下提供它。 – cosinus

+0

@cosinus該示例是一個內聯函數調用! – EJP

1

常見符號存在的主要原因是由於Fortran具有其通用塊,因此名稱爲「常用符號」。常用符號的概念與C++相反,它是一個相當嚴格的定義規則。 C有一個類似的規則,但是C標準也認識到允許同一個符號的多重定義是該語言的一個普通擴展。 C++沒有「公共擴展」附錄。無論是供應商是否符合標準或不符合標準。

底線:C++編譯器沒有理由生成通用符號。