2
如何確保我的代碼與設置爲最嚴格級別的每個gcc編譯器兼容?是否有任何測試儀工具或我需要手動測試它?謝謝C代碼兼容性
如何確保我的代碼與設置爲最嚴格級別的每個gcc編譯器兼容?是否有任何測試儀工具或我需要手動測試它?謝謝C代碼兼容性
每一個gcc編譯器都很簡單,只需要使用一箇舊的編譯器,並且它肯定會與新編譯器一起編譯。
如果你想讓它與任何編譯器一起編譯,它會更難一點。建議您可以使用-ansi開關來禁用gcc擴展。
或'-std = c99'使用較新的ISO/ANSI標準('-ansi'相當於'-std = c89') –
沒有辦法完全確定(特別是因爲有些未定義的行爲在編譯時幾乎不可能檢測到),但使用'-ansi -pedantic -Wall -Wextra'可能是一個好的開始。 –
謝謝。我嘗試了一下,剛開始時,我沒有幾個警告,但是-ansi有大約15個非常奇怪的錯誤/警告。幾次它說有沒有使用的變量(當然這是使用的),一些解析錯誤和一些其他警告。我應該擔心嗎?我沒有在代碼中看到任何解析錯誤或未使用的變量,所以我不明白爲什麼會出現如此多的錯誤 – user10099
'-ansi'意味着C89(顫抖),因此,例如,您不能混合聲明和代碼,你不能使用'''註釋,你有「隱式int」和隱式函數聲明。 '-std = c99 -Wall -Watra -pedantic-errors'是一個很好的組合,IMO。 –