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 模式(默認模式)下,編譯器接受可能與嚴格遵循 ANSI/ISO C/C++ 的程序相沖突的語言擴展。在嚴格 ANSI 模式下,這些語言擴展遭到抑制,因此編譯器將接受所有嚴格遵循規范的程序。
當您知道您的程序是一個遵循規范的程序,并且不會在寬松模式下編譯時,請使用 --strict_ansi 選項。在此模式下,與 ANSI/ISO C/C++ 相沖突的語言擴展將被禁用,編譯器將在標準要求時發出錯誤消息。本標準視為酌情處理的違規行為可作為警告發出。
示例:
以下是嚴格遵循規范的 C 代碼,但在默認寬松模式下將不被編譯器接受。若要使編譯器接受這種代碼,請使用嚴格 ANSI 模式。編譯器將抑制 interrupt 關鍵字語言異常,然后,interrupt 可用作代碼中的標識符。
int main()
{
int interrupt = 0;
return 0;
}
以下是未嚴格遵循規范的代碼。編譯器將不接受這種嚴格 ANSI 模式下的代碼。若要使編譯器接受這種代碼,請使用寬松 ANSI 模式。 編譯器將提供 interrupt 關鍵字擴展并接受此代碼。
interrupt void isr(void);
int main()
{
return 0;
}
以下代碼在所有模式下均被接受。__interrupt 關鍵字與 ANSI/ISO C 標準不沖突,因此始終可以作為一種語言擴展。
__interrupt void isr(void);
int main()
{
return 0;
}默認模式為寬松 ANSI。 可以通過 --relaxed_ansi(或 -pr)選項來選擇此模式。寬松 ANSI 模式接受種類最多的程序,以及所有 TI 語言擴展,即使是那些與 ANSI/ISO 相沖突的擴展,也會忽略一些編譯器能夠合理處理的 ANSI/ISO 沖突。節 5.17 中描述的一些 GCC 語言擴展可能與嚴格 ANSI/ISO 標準相沖突,但許多 GCC 語言擴展可能不與這些標準相沖突。