ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
在寬松 ANSI/ISO 模式(默認(rèn)模式)下,編譯器接受可能與嚴(yán)格遵循 ANSI/ISO C/C++ 的程序相沖突的語(yǔ)言擴(kuò)展。在嚴(yán)格 ANSI 模式下,這些語(yǔ)言擴(kuò)展遭到抑制,因此編譯器將接受所有嚴(yán)格遵循規(guī)范的程序。
當(dāng)您知道您的程序是一個(gè)遵循規(guī)范的程序,并且不會(huì)在寬松模式下編譯時(shí),請(qǐng)使用 --strict_ansi 選項(xiàng)。在此模式下,與 ANSI/ISO C/C++ 相沖突的語(yǔ)言擴(kuò)展將被禁用,編譯器將在標(biāo)準(zhǔn)要求時(shí)發(fā)出錯(cuò)誤消息。本標(biāo)準(zhǔn)視為酌情處理的違規(guī)行為可作為警告發(fā)出。
示例:
以下是嚴(yán)格遵循規(guī)范的 C 代碼,但在默認(rèn)寬松模式下將不被編譯器接受。若要使編譯器接受這種代碼,請(qǐng)使用嚴(yán)格 ANSI 模式。編譯器將抑制 interrupt 關(guān)鍵字語(yǔ)言異常,然后,interrupt 可用作代碼中的標(biāo)識(shí)符。
int main()
{
int interrupt = 0;
return 0;
}
以下是未嚴(yán)格遵循規(guī)范的代碼。編譯器將不接受這種嚴(yán)格 ANSI 模式下的代碼。若要使編譯器接受這種代碼,請(qǐng)使用寬松 ANSI 模式。 編譯器將提供 interrupt 關(guān)鍵字?jǐn)U展并接受此代碼。
interrupt void isr(void);
int main()
{
return 0;
}
以下代碼在所有模式下均被接受。__interrupt 關(guān)鍵字與 ANSI/ISO C 標(biāo)準(zhǔn)不沖突,因此始終可以作為一種語(yǔ)言擴(kuò)展。
__interrupt void isr(void);
int main()
{
return 0;
}默認(rèn)模式為寬松 ANSI。 可以通過(guò) --relaxed_ansi(或 -pr)選項(xiàng)來(lái)選擇此模式。寬松 ANSI 模式接受種類(lèi)最多的程序,以及所有 TI 語(yǔ)言擴(kuò)展,即使是那些與 ANSI/ISO 相沖突的擴(kuò)展,也會(huì)忽略一些編譯器能夠合理處理的 ANSI/ISO 沖突。節(jié) 5.17 中描述的一些 GCC 語(yǔ)言擴(kuò)展可能與嚴(yán)格 ANSI/ISO 標(biāo)準(zhǔn)相沖突,但許多 GCC 語(yǔ)言擴(kuò)展可能不與這些標(biāo)準(zhǔn)相沖突。