C语言宏定义(高级篇).ppt

C语言宏定义(高级篇).ppt

ID:55827772

大小:120.00 KB

页数:19页

时间:2020-06-09

C语言宏定义(高级篇).ppt_第1页
C语言宏定义(高级篇).ppt_第2页
C语言宏定义(高级篇).ppt_第3页
C语言宏定义(高级篇).ppt_第4页
C语言宏定义(高级篇).ppt_第5页
资源描述:

《C语言宏定义(高级篇).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、补充(三) 宏编程——#define&常用调试技巧MacroProgrammingUsing#define&GeneralDebugTechnologySpecialIssueforHITMath-071内容简介本部分将主要讲解C++中宏定义的应用——如何利用宏来简化程序设计,实现代码级的简化、封装、重用等。2简单常量的定义#defineN1000定义简单的常量,便于修改。切不可在后面加上分号!等效于constintN=1000;仅是简单替换,而不是作为一个量来使用。3简单函数的定义#defineMAX(x

2、,y)((x)>(y))?(x):(y)定义简单的函数,便于调用。注意括号的使用。不同于inline类型的函数。仅是简单替换,编译阶段,不检查语法;4单行宏的定义定义单行宏,有下列三种方式:前加##或后加##,将标记作为一个合法的标识符的一部分。注意,不是字符串。例如:#defineA(x)T_##x则intA(1)=10;//等效于intT_1=10;#defineA(x)Tx##__则intA(1)=10;//等效于intT1__=10;前加#@,将标记转换为相应的字符,注意:仅对单一标记转换有效。如:

3、#defineB(x)#@x则B(a)即‘a’,B(1)即‘1’。但B(abc)无效。前加#,将标记转换为字符串。如:#defineC(x)#x则C(1+1)即“1+1”。5多行宏的定义#defineDECLARE_RTTI(thisClass,superClass)virtualconstchar*GetClassName()const{return#thisClass;}staticintisTypeOf(constchar*type){if(!strcmp(#thisClass,type)r

4、eturn1;returnsuperClass::isTypeOf(type);}virtualintisA(constchar*type){returnthisClass::isTypeOf(type);}staticthisClass*SafeDownCast(DitkObject*o){if(o&&o->isA(#thisClass))returnstatic_cast(o);returnNULL;}注意斜杠的使用,最后一行不能用斜杠。6条件编译的定义#if

5、ndef_AAA_H#define_AAA_H//c/c++代码#endif可根据编译条件选择不同的程序代码执行。可嵌套定义。7宏定义举例(一)#defineMAKE_COMPONENT(C)((IW3D##C*)MakeComponent(#C))则,IW3DScene*pScene=MAKE_COMPONENT(Scene);将被理解为:pScene=((IW3DScene*)MakeComponent("Scene");8宏定义举例(二)#defineIMPLEMENT_COMPONENT(I,C)

6、staticIComponent*Component_Factory_##C(){returnnewI;}ComponentInfoComponent_##C={#C,Component_Factory_##C};9宏定义举例(三)#defineSINGLETON_COMPONENT(I)private:staticI*ms_pSingleton;public:staticI*GetSingleton(){returnms_pSingleton;}voidSetSingle

7、ton(){ms_pSingleton=this;}voidRelease(){ms_pSingleton=NULL;IComponent::Release();}10宏定义举例(四)#defineIMPLEMENT_SINGLETON_COMPONENT(I,C)I*I::ms_pSingleton=NULL;staticIComponent*Component_Factory_##C(){if(I::GetSingleton()){returnI::GetSingleton(

8、);}I*pCom=newI;Assert(pCom);pCom->SetSingleton();returnpCom;}ComponentInfoComponent_##C={#C,Component_Factory_##C};11宏定义举例(五)#ifdef_DEBUG#defineUNDER_MEMORY_MGR(C)void*operatornew(unsignedintsize)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。