zoukankan      html  css  js  c++  java
  • 使用编译器来使用宏变量

    原文链接: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  

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

  • 相关阅读:
    Emacs 安装 jedi
    PHP+ MongoDB
    Debian 7 安装 Emacs 24.3
    在Code first中使用数据库里的视图
    Emacs安装auto-complete
    Debian 7.4 中配置PHP环境
    ASP.NET MVC 下载列表
    JDicom使用指南
    Windows常用的DOS命令
    Entity Framework问题总结
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2713511.html
Copyright © 2011-2022 走看看