gcc编译器中关于C和C++语言标准的选项总结。
可以在sourceinsight中,很方便的查看“相关函数和变量”。
//
// 相关: c_common_handle_option(),【"-lang-asm", OPT_lang_asm, CLK_ASM】, preprocessing_asm_p(), cpp_init_builtins(),
//
// gcc选项"-lang-asm" ---- 采用 汇编预处理CLK_ASM. 注意: gcc选项"-ansi" 可覆盖它, 而其它语言选项 落后于它
//
//
// 相关:【set_std_c89(),set_std_c99(),set_std_c11(), set_std_cxx98(),set_std_cxx11(),set_std_cxx1y()】--> cpp_set_lang() -->【c_lang, lang_defaults[]】,
//
// 相关: c_common_handle_option(),【"-std=iso9899:199409", OPT_std_iso9899_199409, CLK_STDC94, "-ansi", OPT_ansi, CLK_STDC89或CLK_CXX98】,
//
// 相关: c_common_handle_option(),【"-std=c90", OPT_std_c90, CLK_STDC89, "-std=gnu90", OPT_std_gnu90, CLK_GNUC89】,
// 相关: c_common_handle_option(),【"-std=c99", OPT_std_c99, CLK_STDC99, "-std=gnu99", OPT_std_gnu99, CLK_GNUC99】,
// 相关: c_common_handle_option(),【"-std=c11", OPT_std_c11, CLK_STDC11, "-std=gnu11", OPT_std_gnu11, CLK_GNUC11】,
//
// 相关: c_common_handle_option(),【"-std=c++98", OPT_std_c__98, CLK_CXX98, "-std=gnu++98", OPT_std_gnu__98, CLK_GNUCXX, cxx98】,
// 相关: c_common_handle_option(),【"-std=c++11", OPT_std_c__11, CLK_CXX11, "-std=gnu++11", OPT_std_gnu__11, CLK_GNUCXX11, cxx11】,
// 相关: c_common_handle_option(),【"-std=c++1y", OPT_std_c__1y, CLK_CXX11, "-std=gnu++1y", OPT_std_gnu__1y, CLK_GNUCXX11, cxx1y】,
//
// gcc选项"-std=iso9899:199409" ---- 采用 ISO_C94语言标准(CLK_STDC94, flag_isoc94, flag_iso, flag_no_asm,flag_no_nonansi_builtin,flag_no_gnu_keywords)
//
// gcc选项"-ansi" ---- 采用 ISO_C89语言标准CLK_STDC89,或ISO_C++98语言标准CLK_CXX98
//
// gcc选项"-std=gnu90" ---- 采用 GNU_C89语言标准(CLK_GNUC89)
// gcc选项"-std=c90" ---- 采用 ISO_C89语言标准(CLK_STDC89, flag_iso, flag_no_asm,flag_no_nonansi_builtin,flag_no_gnu_keywords)
//
// gcc选项"-std=gnu99" ---- 采用 GNU_C99语言标准(CLK_GNUC99, flag_isoc99,flag_isoc94)
// gcc选项"-std=c99" ---- 采用 ISO_C99语言标准(CLK_STDC99, flag_isoc99,flag_isoc94, flag_iso, flag_no_asm,flag_no_nonansi_builtin)
//
// gcc选项"-std=gnu11" ---- 采用 GNU_C11语言标准(CLK_GNUC11, flag_isoc11,flag_isoc99,flag_isoc94)
// gcc选项"-std=c11" ---- 采用 ISO_C11语言标准(CLK_STDC11, flag_isoc11,flag_isoc99,flag_isoc94, flag_iso, flag_no_asm,flag_no_nonansi_builtin)
//
// gcc选项"-std=gnu++98" ---- 采用 GNU_C++98语言标准(CLK_GNUCXX)
// gcc选项"-std=c++98" ---- 采用 ISO_C++98语言标准(CLK_CXX98, flag_iso, flag_no_nonansi_builtin,flag_no_gnu_keywords)
//
// gcc选项"-std=gnu++11" ---- 采用 GNU_C++11语言标准(CLK_GNUCXX11, flag_isoc99,flag_isoc94)
// gcc选项"-std=c++11" ---- 采用 ISO_C++11语言标准(CLK_CXX11, flag_isoc99,flag_isoc94, flag_iso, flag_no_nonansi_builtin,flag_no_gnu_keywords)
//
//
一些补充说明:
//
// 标记支持 ISO语言标准flag_iso==1
// 标记支持 GNU语言标准flag_iso==0
//
// 上级: c_cpp_builtins(), set_std_c89(),
//
/* Nonzero if an ISO standard was selected. It rejects macros in the
user's namespace. */
int flag_iso;
//
// 若是支持 至少C94语言标准flag_isoc94==1
//
/* Nonzero means enable C89 Amendment 1 features. */
int flag_isoc94;
//
//
// 若是支持 至少C99语言标准flag_isoc99(ISO_C99语言标准,GNU_C99语言标准,ISO_C11语言标准,GNU_C11语言标准)
//
/* Nonzero means use the ISO C99 (or C11) dialect of C. */
int flag_isoc99;
//
//
// 若是支持 至少C11语言标准flag_isoc11(ISO_C11语言标准,GNU_C11语言标准)
//
/* Nonzero means use the ISO C11 dialect of C. */
int flag_isoc11;
一些相关选项:
//
// 相关: set_option(),【"-fasm", OPT_fasm, flag_no_asm, "-fgnu-keywords", OPT_fgnu_keywords, flag_no_gnu_keywords】, c_parse_init(), set_std_c89(), c_register_addr_space(),
//
// gcc选项"-fasm" ---- D_ASM|D_EXT类关键字(asm,typeof,_DecimalNN,寻址空间rid关键字标号RID_ADDR_SPACE_n等)的禁用开关flag_no_asm==( global_options.x_flag_no_asm )
//
// gcc选项"-fgnu-keywords" ---- D_EXT类关键字的禁用开关flag_no_gnu_keywords==( global_options.x_flag_no_gnu_keywords )
//
//
// 相关: set_option(),【"-fbuiltin", OPT_fbuiltin, flag_no_builtin】, def_builtin_1(),
//
// 相关: set_option(),【"-fnonansi-builtins", OPT_fnonansi_builtins, flag_no_nonansi_builtin】, def_builtin_1(), set_std_c99(),
//
// 相关: c_common_handle_option(),【"-fbuiltin-", OPT_fbuiltin_, disabled_builtins】, disable_builtin_function(), builtin_function_disabled_p() <-- def_builtin_1(),
//
//
// gcc选项"-fbuiltin" ---- 使得 (所有的)lib库内置函数声明的禁止构建flag_no_builtin==( global_options.x_flag_no_builtin )
//
// gcc选项"-fnonansi-builtins" ---- 使得 (非ANSI函数的)lib库内置函数声明的禁止构建flag_no_nonansi_builtin==( global_options.x_flag_no_nonansi_builtin )
//
// gcc选项"-fbuiltin-" ---- 使得 (某个名字的)lib库内置函数声明的禁止构建disabled_builtins
//
//