[code]/* hello.c */
#include
#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;
}[/code]
使用-D传入宏YES来进行编译:
[code]recordus@LFS test # gcc -DYES -o helloyes hello.c
recordus@LFS test # ./helloyes
Yes, this is a macro.[/code]
而不传入宏则是这样的:
[code]recordus@LFS test # gcc -o hellono hello.c
recordus@LFS test # ./hellono
No, there is no macro.[/code]
gcc还有与-D对应的另一个参数-U用于取消宏,比如:
[code]root@LFS test # gcc -DYES -UYES -o helloyesno hello.c
root@LFS test # ./helloyesno
No, there is no macro.[/code]
这大概是这两个参数最简单的应用了:)