26

我正在看一个 CFLAGS -

CFLAGS=-g -w -D LINUX -O3 -fpermissive

在 Makefile 中。-D 标志有什么作用?我在手册页上看到

-D name
    Predefine name as a macro, with definition 1. 

但我不知道如何解释。我的解释是……它使 LINUX 成为一个宏,并且只在 linux 环境中执行 -03 和 -fpermissive 。是对的吗?如果不是,那又如何?谢谢你的帮助

4

2 回答 2

31

相当于#define LINUX 1在正在编译的文件的源代码中添加语句。它对其他编译标志没有任何影响。这样做的原因是它是一种#ifdef在代码中启用语句的简单方法。所以你可以有这样的代码:

#ifdef LINUX
   foo;
#endif

-D仅当启用了您可以使用标志控制的宏时才会启用它。因此,无需编辑源文件即可在编译时启用/禁用条件编译语句是一种简单的方法。

于 2012-04-26T16:12:59.193 回答
3

它与 没有任何关系-O3。基本上,它的含义与

#define LINUX 1

在编译文件的开头。

于 2012-04-26T16:13:26.270 回答