假設我有一個C++程序,並且我想從其中的C目標文件中調用函數。約束是我不允許對C源文件進行任何更改。在幾個含有等效簽名功能的C目標文件中鏈接
在這種情況下,我將包括C頭作爲的extern「C」在我的C++文件,調用函數,編譯使用GCC -c C對象,並且將結果傳遞給克++沿實際的C++源代碼。
我想我還要做的是把C-頭的#include名爲命名空間塊內部的C++文件,以保持局部命名空間乾淨(誰知道還有什麼其他花哨的東西有什麼在.h文件中)。
現在如果我需要從兩個C目標文件中調用函數。可以說他們有不同的簽名。但是在對象文件中也有一些重複的功能。如果我試圖同時將兩個對象傳遞給g ++,那麼我的鏈接器在這一點上是否會炸燬?全局相同。
再次:我不允許更改ANY的C源代碼。否則,我只是將.c文件重命名爲.cxx,將其內容和相應標頭的內容封裝在命名空間bla {}內,並將所有內容填入g ++。
(是的,C是不是C++的一個子集,如已經在評論中提及了)
如果Carl的建議對你有效,爲什麼不能簡單地用'-x C++'編譯C源代碼?你想要命名空間? – 2010-08-07 16:32:37
由於多重定義,鏈接器是否會繼續繁榮? – nisc 2010-08-07 16:37:17
是的,會的。我錯過了,因爲我沒有看過「假設他們有不同的簽名......」之後的句子...... – 2010-08-07 16:55:12