C++ Coder

HCP高性能计算架构,实现,编译器指令优化,算法优化, LLVM CLANG OpenCL CUDA OpenACC C++AMP OpenMP MPI

C++博客 首页 新随笔 联系 聚合 管理
  98 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
http://blog.csdn.net/bendanban/article/details/7753995
刚学了一招,可以使用编译器的-D选项来定义程序中使用的宏。
#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

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




posted on 2012-10-21 12:41 jackdong 阅读(283) 评论(0)  编辑 收藏 引用 所属分类: C/C++Linux_Unix编程

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理