我正在看一个CFLAGS的 –
CFLAGS=-g -w -D LINUX -O3 -fpermissive
在一个Makefile中。 -D标志是做什么的? 我在手册页上看到
-D name Predefine name as a macro, with definition 1.
但我不知道如何解释。 我的解释是……它使得LINUX成为一个macros,只在Linux环境下做-03和-fpermissive。 是对的吗? 如果不是,那么是什么? 谢谢你的帮助
这相当于在正在编译的文件的源代码中添加语句#define LINUX 1
。 它对其他编译标志没有任何影响。 原因是这是在代码中启用#ifdef
语句的简单方法。 所以你可以有这样的代码:
#ifdef LINUX foo; #endif
只有在启用了可以用-D
标志控制的宏时才能使用。 因此,在编译时启用/禁用条件编译语句而不编辑源文件是一种简单的方法。
这与-O3
没有任何关系。 基本上,这意味着相同的
#define LINUX 1
在编译文件的开头。