使用编译器来使用宏变量

原文链接:http://www.cppblog.com/jialisoft/archive/2012/10/04/192742.html

  1. #include <stdio.h>  
  2. int main(int argc, char **argv)  
  3. {  
  4.     #ifdef MY_MAC  
  5.     printf("Hello -D.\n");  
  6.     #else   
  7.     printf("MY_MAC was not defined.\n");  
  8.     #endif  
  9.     return 0;  
  10. }  



上面的代码中使用了MY_MAC宏,

 

【】$g++ -DMY_MAC -o dtest dtest.c

执行结果:

 

  1. 【】$ ./dtest   
  2. Hello -D.  
  3. 【】$  

无掉-D选项,重新编译,执行结果:

 

  1. 【】$ g++ ./dtest.c -o dtest  
  2. 【】$ ./dtest   
  3. MY_MAC was not defined.  


我们可以利用编译器这个选项来调试我们的程序奥。

 

如果我的宏代表一个常量怎么办呢??

看看修改后的代码:

 

  1. #include <stdio.h>  
  2. int main(int argc, char **argv)  
  3. {  
  4.     #ifdef MY_MAC  
  5.     printf("Hello -D. %d\n", MY_MAC);  
  6.     #else   
  7.     printf("MY_MAC was not defined.\n");  
  8.     #endif  
  9.     return 0;  
  10. }  


我输出了宏代表的值。

 

在终端执行一下命令:

 

  1. 【】$ g++ -DMY_MAC=5 ./dtest.c -o dtest  
  2. 【】$ ./dtest   
  3. Hello -D. 5  
  4. 【】$  

 

如果程序中有多个宏可以这样编译

 

  1. 【】$g++ -DMAC1=5 -DMAC2=6 soucefile.c  

 

 

 

^_^,,很兴奋是吧??这样我们就不用在代码里修改宏变量了。。

posted @ 2012-10-07 05:42  wangkangluo1  阅读(732)  评论(0编辑  收藏  举报