注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

C++小知识29—预编译宏的顺序  

2011-12-20 19:41:53|  分类: C++(VC)编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

预编译宏的顺序
今天兄弟问如果有多个模块,如何用预编译宏来控制模块的编译顺序,这个东西平时也不怎么用,这猛得一问,还真是说不明白,自己翻了下资料,做了个测试,发现宏可以算是一个不完整的全局变量,其前提就是必须你的宏定义在使用的模块内或者其前面,否则,这个东西是不起作用的。

自己做了个测试:
两CPP文件:
test1.cpp:

#ifdef MAX
int abb = 0;
#else
int abb = 10;
#endif

test2.cpp

#ifdef MAX
int aab = 0;
#else
int aab = 100;
#endif

在主文件中运行,两个变量为10和100(0xa,0x64),然后在一个test1.cpp中定义了宏MAX,则abb变为了0,再把宏定义移到主函数的文件中定义,两个变量为10、100,说明没有使用定义的宏。然后换一种方法,定义头文件header1.h,header2.h,将这两块代码分别拷入,在主函数里增加头文件的包含,并在其前面定义MAX,两个变量为 0,说明宏定义成功。我们再把MAX挪到包含头文件的后面,看看会是什么效果呢?
果不出所料,MAX没有起作用,两个变量为10和100。

宏的应用很复杂,这个学过MFC的消息机制的应该都明白,所以在任何的细小的事情上,都不要大意。
努力,不辍今朝。

  评论这张
 
阅读(723)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017