x9gcc直播 mac使用gcc為什么編譯錯(cuò)誤是clang提示?
mac使用gcc為什么編譯錯(cuò)誤是clang提示?gcc5和clang默認(rèn)都是C11標(biāo)準(zhǔn),它們遵循C99的內(nèi)聯(lián)語(yǔ)義。C99的內(nèi)聯(lián)語(yǔ)義不同于C和gnu89的內(nèi)聯(lián)語(yǔ)義。對(duì)于C99,函數(shù)定義前面的inline
mac使用gcc為什么編譯錯(cuò)誤是clang提示?
gcc5和clang默認(rèn)都是C11標(biāo)準(zhǔn),它們遵循C99的內(nèi)聯(lián)語(yǔ)義。C99的內(nèi)聯(lián)語(yǔ)義不同于C和gnu89的內(nèi)聯(lián)語(yǔ)義。
對(duì)于C99,函數(shù)定義前面的inline關(guān)鍵字意味著當(dāng)函數(shù)是inline時(shí),函數(shù)定義將提供給編譯器inline。但是,如果該函數(shù)不是由編譯器內(nèi)聯(lián)的,編譯器將假定該函數(shù)是在其他地方定義的。
例如,如果f函數(shù)是內(nèi)聯(lián)函數(shù),請(qǐng)將函數(shù)內(nèi)聯(lián)定義到調(diào)用它的位置,即主函數(shù)。如果它不是內(nèi)聯(lián)的,編譯器將假定在其他地方有F的定義。在這個(gè)編譯單元中,只有一個(gè)函數(shù)聲明。
除非為函數(shù)指定always inline屬性。
查看輸出llvm IR:
這與O2的輸出相同。