GCC - 包含编译标志的宏
Posted
技术标签:
【中文标题】GCC - 包含编译标志的宏【英文标题】:GCC - Macro containing compilation flags 【发布时间】:2017-11-20 15:36:50 【问题描述】:GCC 中是否有包含用于编译程序的编译标志的宏?
我想要这样的东西:
printf("Compilation flags: %s", __FLAGS__);
以输出为例:
Compilation flags: -02 -g
【问题讨论】:
它是O2
而不是02
BTW...
嗯,当然。错字。
【参考方案1】:
简短回答:不。
稍微长一点的答案:即使有,您的代码也会变得不可移植。需要这种功能的项目让构建系统来做,例如通过将所有标志放在make
中的CFLAGS
变量中并有一个规则创建一个config.h
将所有这些标志放在#define
那里。
【讨论】:
这不太正确。可以通过宏找到选项的子集:gcc.gnu.org/onlinedocs/gcc-3.3.5/cpp/… 例如__OPTIMIZE__ __OPTIMIZE_SIZE__ __NO_INLINE__
@EugeneSh。我不知道您在哪里看到了“子集”?这些只是定义或未定义,它们不包含任何命令行标志。
是的,但是如果您对某些特定选项感兴趣,您可以从这里获得它们。不确定这是 OP 感兴趣的内容...
对不起,但我不买那个;)只有一个标志告诉你是否有任何优化是活跃的;)
我同意菲利克斯的观点。我已经看到标志为__OPTIMIZE__
,但它没有给我任何关于优化级别的信息。我考虑过 Makefile,但该项目是由 IDE 管理的,所以有点难。我想我会手动放。【参考方案2】:
这可能不会有太大帮助,但 GCC 有一个选项 -fverbose-asm
(https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html) 会将生成的程序集中使用的命令行选项转储为注释。
当然,这仅在您打算读取生成的程序集而不是直接组装它时才有用
【讨论】:
以上是关于GCC - 包含编译标志的宏的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 GCC 编译具有特定编译器标志的代码文件的一部分?