我正在查看一个CFLAGS的值为 -
CFLAGS=-g -w -D LINUX -O3 -fpermissive
在Makefile中,-D标志的作用是什么?我在man页面上看到
-D name
Predefine name as a macro, with definition 1.
但我不知道如何解释它。我的理解是...它将 LINUX 变成一个宏,并且仅在 Linux 环境下执行 -03 和 -fpermissive。这是正确的吗?如果不是,那么是什么呢?感谢任何帮助。
我正在查看一个CFLAGS的值为 -
CFLAGS=-g -w -D LINUX -O3 -fpermissive
在Makefile中,-D标志的作用是什么?我在man页面上看到
-D name
Predefine name as a macro, with definition 1.
但我不知道如何解释它。我的理解是...它将 LINUX 变成一个宏,并且仅在 Linux 环境下执行 -03 和 -fpermissive。这是正确的吗?如果不是,那么是什么呢?感谢任何帮助。
它等同于在编译的源代码文件中添加语句#define LINUX 1
。它对其他编译标志没有任何影响。原因是这是一种在代码中启用#ifdef
语句的简单方法。因此,您可以拥有以下代码:
#ifdef LINUX
foo;
#endif
仅当您使用-D
标志控制的宏被启用时,它才会被启用。 因此,在编译时启用/禁用有条件的编译语句是一种简单的方法,而无需编辑源文件。
-D
标志不会影响接下来的标志(例如使它们有条件或类似的疯狂说法),这是一个相当重要的区别。 - jpm这与 -O3
没有关系。基本上,它的意思与之相同。
#define LINUX 1
在编译文件的开头。