Linux g++-D旗怎么办?
我看到的是-Linux g++-D旗怎么办?,linux,compilation,g++,flags,Linux,Compilation,G++,Flags,我看到的是- CFLAGS=-g -w -D LINUX -O3 -fpermissive 在生成文件中。-D标志的作用是什么?我在手册页上看到 -D name Predefine name as a macro, with definition 1. 但我不知道该怎么解释。我的解释是…它使LINUX成为一个宏,在LINUX环境中只允许执行-03和-fp。是这样吗?如果没有,那怎么办?感谢您的帮助这相当于在正在编译的文件的源代码中添加语句#define LINUX 1。它对其他编译
CFLAGS=-g -w -D LINUX -O3 -fpermissive
在生成文件中。-D标志的作用是什么?我在手册页上看到
-D name
Predefine name as a macro, with definition 1.
但我不知道该怎么解释。我的解释是…它使LINUX成为一个宏,在LINUX环境中只允许执行-03和-fp。是这样吗?如果没有,那怎么办?感谢您的帮助这相当于在正在编译的文件的源代码中添加语句
#define LINUX 1
。它对其他编译标志没有任何影响。这样做的原因是,在代码中启用#ifdef
语句非常简单。因此,您可以使用这样的代码:
#ifdef LINUX
foo;
#endif
仅当启用了可使用
-D
标志控制的宏时,才会启用该宏。因此,在编译时启用/禁用条件编译语句是一种简单的方法,无需编辑源文件。它与-O3
无关。基本上,它的意思与
#define LINUX 1
在编译文件的开头。通常,
-D
被粘在以下(定义的)名称上,例如-DLINUX
或-DFOO=BAR
I将+1,但解释仅在一定程度上是正确的。-D
标志不影响以下标志(例如,使它们成为条件标志或一些类似的疯狂言论),这是一个相当重要的区别。@jpm这是一个很好的观点,我在第一次阅读时没有这样解释这个问题,但现在我发现你是正确的。我编辑了我的答案以澄清这一点。-O3
将编译器的优化级别设置为3。