gcc编译器中关于C和C++语言标准的选项总结

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 
// 
// 


猜你喜欢

转载自blog.csdn.net/weixin_44285036/article/details/107719018