gcc的-D和-U参数:宏的设置与取消

http://blog.chinaunix.net/uid-7213338-id-2658068.html

分类: LINUX

这两天做LFS注意到了gcc的-D参数:在gcc命令中定义宏,比如我有如下的代码:
/* 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 ", str);
    return 0;
}
使用-D传入宏YES来进行编译:
recordus@LFS test # gcc -DYES -o helloyes hello.c
recordus@LFS test # ./helloyes
Yes, this is a macro.

而不传入宏则是这样的:
recordus@LFS test # gcc -o hellono hello.c
recordus@LFS test # ./hellono
No, there is no macro.

gcc还有与-D对应的另一个参数-U用于取消宏,比如:
root@LFS test # gcc -DYES -UYES -o helloyesno hello.c
root@LFS test # ./helloyesno
No, there is no macro.

这大概是这两个参数最简单的应用了:)
 
原文地址:https://www.cnblogs.com/okgogo2000/p/4449628.html