由於C++
的類型安全性更嚴格,因此如果編譯爲C++
文件,某些C
代碼不會與C++
編譯器一起編譯。是否有任何工具需要C
代碼並從中生成有效的C++
代碼。換句話說,它增加了C
代碼使編譯器使用C++
編譯器編譯所需的代碼。C到C++轉換器
請注意,我知道C和C++代碼可以鏈接,但在這裏我具體討論瞭如何將C代碼編譯爲C++編譯器並將它們視爲C++代碼文件。
由於C++
的類型安全性更嚴格,因此如果編譯爲C++
文件,某些C
代碼不會與C++
編譯器一起編譯。是否有任何工具需要C
代碼並從中生成有效的C++
代碼。換句話說,它增加了C
代碼使編譯器使用C++
編譯器編譯所需的代碼。C到C++轉換器
請注意,我知道C和C++代碼可以鏈接,但在這裏我具體討論瞭如何將C代碼編譯爲C++編譯器並將它們視爲C++代碼文件。
嘗試使用附加標誌進行編譯,使其更加不嚴格和/或編譯器不同。
編輯#1:我不能添加評論。我只是想出了一些想法,我並沒有親自執行這些想法。經過一番探索後,您可能是SOL,具體取決於C代碼是否寫入了不屬於C++子集的部分集合。
如果它只是非ansi C標準問題,您可能可以找到它。如果您使用的是gcc,可以嘗試使用Microsoft Visual C++或OpenWatcom。
至於旗幟,我認爲你可以做寬大,但我可能是錯的。標誌將取決於編譯器,我想我已經使用了-std = isoC99,-compat,-feat = features。
我可以這樣做嗎? – MetallicPriest
不確定是否存在這樣的工具。
從來沒有嘗試過,因爲我從來沒有這樣做過,但是:
您可以嘗試將C代碼編譯爲lib。也許,如果你幸運的話,那麼你的C代碼的頭文件是有效的C++。在C++中包含這些頭文件,並鏈接到lib。
再次,從來沒有試過這個,不知道它是否會起作用。只是一個想法。
只需將您的C代碼放在一個單獨的.c文件中,並將其編譯爲C.您將使用哪種編譯器?
如果我可以這樣做,我會這樣做,但我需要修改該代碼,並且需要將C++結構放入其中,因此不能將它分離到單獨的C文件中。 – MetallicPriest
語言差異很大,任何嘗試直接轉換都註定要失敗。你必須經過一箇中間的人工語言,C語言已經基本上已經編譯好了,在這一點上,所得到的C++會非常難看,你不會希望看到它。
我認爲你需要考慮這是在您的相關頭文件是C和C++代碼,並使用編譯器指令的組合如下:
#ifdef __cplusplus
extern "C"
#endif
您可以參考C++ FAQ-精簡版的「How to mix C and C++」爲對該主題進行更徹底的討論。
David,並且該工具沒有任何時間或耐力來完成它:(! – MetallicPriest
類型安全系統是爲了防止你編寫錯誤,並沒有系統地檢查C++編譯器抱怨的地方,修復它們比留下潛在的錯誤更好嗎? – jeffythedragonslayer