原文链接:http://www.cppblog.com/jialisoft/archive/2012/10/04/192742.html
- #include <stdio.h>
- int main(int argc, char **argv)
- {
- #ifdef MY_MAC
- printf("Hello -D.\n");
- #else
- printf("MY_MAC was not defined.\n");
- #endif
- return 0;
- }
上面的代码中使用了MY_MAC宏,
【】$g++ -DMY_MAC -o dtest dtest.c
执行结果:
- 【】$ ./dtest
- Hello -D.
- 【】$
无掉-D选项,重新编译,执行结果:
- 【】$ g++ ./dtest.c -o dtest
- 【】$ ./dtest
- MY_MAC was not defined.
我们可以利用编译器这个选项来调试我们的程序奥。
如果我的宏代表一个常量怎么办呢??
看看修改后的代码:
- #include <stdio.h>
- int main(int argc, char **argv)
- {
- #ifdef MY_MAC
- printf("Hello -D. %d\n", MY_MAC);
- #else
- printf("MY_MAC was not defined.\n");
- #endif
- return 0;
- }
我输出了宏代表的值。
在终端执行一下命令:
- 【】$ g++ -DMY_MAC=5 ./dtest.c -o dtest
- 【】$ ./dtest
- Hello -D. 5
- 【】$
如果程序中有多个宏可以这样编译
- 【】$g++ -DMAC1=5 -DMAC2=6 soucefile.c
^_^,,很兴奋是吧??这样我们就不用在代码里修改宏变量了。。