是否有一种方法(例如,定义的常量)来访问编译器在编译的代码中运行的编译标志.
例如,我想要一个程序来编写用于编译它的标志.
int main(){
std::cout << COMPILE_FLAGS << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
gcc/g ++是否存在这样的常量?甚至更好:是否有在gcc和clang中定义的常量?
我特别感兴趣的是检查优化级别和-march
标志的值.那么,如果没有显示所有标志的常量,那么至少有哪些显示这些值?
以下命令打印出所有预定义的宏:
g++ -dM -E - < /dev/null
Run Code Online (Sandbox Code Playgroud)
这适用于 gcc 和 g++。您可以检查一下自己 - 不幸的是,没有宏可以轻松访问完整的 gcc/g++ 命令行。
幸运的是,大多数-m...标志都会定义足够的预编译器宏。例如,-m64定义__x86_64,-m32定义__code_model_32__。或者对于-march:-march=core-avx2导致#define __core_avx2__ 1。
只需在上面的命令行上添加您需要检查的选项,然后检查新宏定义的结果。
归档时间: |
|
查看次数: |
346 次 |
最近记录: |