对于GCC编译器,有如下选项:
-D macro=string,等价于在头文件中定义:#define macro string。例如:-D TRUE=true,等价于:#define TRUE true
-D macro,等价于在头文件中定义:#define macro 1,实际上也达到了定义:#define macro的目的。
举例说明:
/* hello.c */
#include <stdio.h>
#ifdef YES
char* str = "Yes, this is a macro.";
#else
char* str = "No, there is no macro.";
#endif
int main()
{
printf("%s\n", str);
return 0;
}
# gcc -DYES -o helloyes hello.c
# ./helloyes
Yes, this is a macro.
# gcc -o hellono hello.c
# ./hellono
No, there is no macro.
另外-U选项是取消宏定义。
在Makefile文件里面,可以通过宏定义来控制源程序的编译。只要在Makefile中的CFLAGS中通过选项-D来指定定义的宏即可。
如:
CFLAGS += -DYES=1