最近,我遇到了一個非常惱人的問題。我需要編譯一些舊的C++代碼,這些代碼是用一個非常古老的g ++版本4.1.2編譯的。如何使G ++不辨<string>和<string.h>
我現在找不到g ++版本,所以我用g ++ 4.4.7來編譯它,但是有很多錯誤,比如error: ‘snprintf’ was not declared in this scope
。
一些工作後,我發現G ++ 4.1.2切勿從<string.h>
從<stdio.h>
等區分<string>
,也<stdio>
。不過G ++ 4.4.7一樣。所以這些錯誤發生了。
由於種種原因,我不能修改舊的源代碼。有沒有辦法可以讓新的g ++忽略<string>
和<string.h>
之間的區別?
'srting'和'string.h'是不同的頭。如果舊版本不區分,那麼可能會被視爲錯誤。我看不到你可以告訴'g ++'不要區分它們。 – taskinoor
作爲解決方法,你可能會迫使GCC始終包括''用'-include' –
Jarod42
我敢肯定GCC 2.95.3得到這個權利,所以我不認爲有周圍4.1.2迴歸。相反,我認爲你在混合使用C和C++規則。 C++頭文件_may_包含其他頭文件。特別是,'''_may_ include''。你無法依靠這種方式。 –
MSalters