`
freesoftman
  • 浏览: 314579 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

#define用法 (转帖改编)

 
阅读更多

CCmdTarget实现com接口的时候,在afxdisp.h头文件中一些宏的定义
#define BEGIN_INTERFACE_PART(localClass, baseClass) \
class X##localClass : public baseClass \

\是什么作用:续行符:表示在一行中。因为宏只能在一行中定义

本来这个宏定义很容易理解的,但是这里多出个X##,我真没见过这种用法,不晓得它是什么用意。后来问了几个朋友也都不知道。
你知道么?
也许你也不知道~呵呵,最后我还是找到了相关的资料,解读了这个define,还顺便认识了另外两个不常用的define
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
x##y表示什么?表示x连接y,举例说:
int n = Conn(123,456); 结果就是n=123456;
char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";
怎么样,很神奇吧
再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:
char a = ToChar(1);结果就是a='1';
做个越界试验char a = ToChar(123);结果是a='3';
但是如果你的参数超过四个字符,编译器就给给你报错了!error C2015: too many characters in constant :P

最后看看#x,估计你也明白了,他是给x加双引号
char* str = ToString(123132);就成了str="123132";

最后留几个小试验给大家去测测:
#define Dec(x,y) (x-y)
int n = Dec( A(123,1), 1230);
n = Conn(123, Conn(123,332) );
char* str = A("12", ToString( Dec(3,1));
结果会如何呢? 嘿嘿嘿嘿~

分享到:
评论

相关推荐

    C语言 #define用法集锦[修正版]

    #define用法集锦 1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME 就定义好了,它代表1000,如果在程序里面写 if(i){.........} 编译器在处理这个代码之前会对MAXTIME 进行处理替换为1000。 这样的定义...

    【C/C++】#ifndef,#define用法

    主要是#ifndef和#define的用法说明,并举例说明便于理解。

    简单实现贪吃蛇游戏源代码

    #define MAXLEN 201 #define LEN 1 #define SPEED1 50 #define SPEED2 100 #define SPEED3 200 #define FOOD1_S1 5 #define FOOD1_S2 10 #define FOOD1_S3 15 #define FOOD2_S1 10 #define FOOD2_S2 20 #define FOOD...

    #define 问题 用法陷阱

    #define 问题 用法陷阱

    #ifndef #define #endif的用法

    #ifndef #define #endif的用法

    #define用法集锦.doc

    The #define Directive  You can use the #define directive to give a meaningful name to a constant in your program. The two forms of the syntax are:  Syntax  #define identifier token-stringopt  #...

    define应用

    题目:宏#define命令练习(1) 1.程序分析:2.程序源代码:#include "stdio.h"#define TRUE 1#define FALSE 0#define SQ(x) (x)*(x)void main(){int num;int again=1;printf("\40: Program will stop if input value ...

    const #define inline

    const #define inline的用法及区别

    宏定义#define用法总结

    C语言中宏定义#define用法总结 1.简单的宏定义 2.带参数的宏 3.宏的特殊单行定义

    #define和typedef的使用

    介绍#define和typedef的区别于使用

    预编译器——#include和#define的实现

    用C语言实现的 预编译器中——#include和#define 操作

    1602液晶驱动

    1602液晶显示的底层驱动c程序,#define DataDir P4DIR #define DataPort P4OUT #define Busy 0x80 #define CtrlDir P5DIR #define CLR_RS P5OUT&=~BIT5; //RS = P5.5 #define SET_RS P5OUT|=BIT5; #define CLR...

    #indef 与#define 区别于用法

    #indef 与#define 区别于用法,很详细的解数哦!

    单片机-#define XBYTE ((unsigned char volatile xdata *) 0)

    #define XBYTE ((unsigned char volatile xdata *) 0) 定义 XBYTE 为 指向 xdata 地址空间unsigned char 数据类型的指针,指针值为0 这样,可以直接用XBYTE[0xnnnn]或*(XBYTE+0xnnnn)访问外部RAM了。

    C语言#define拼接宏定义实现方式

    使用场合:拼接两个宏,一个是传入的宏。但是传入的宏不会被替换,反而原封不动的接了上去,这就尴尬了。经过各种尝试,居然成了,特此记录分享一下,方便大家学习。 char A_param=0; char B_pramm=0; //添加宏定义...

    宏(#define)定义函数妙用

    NULL 博文链接:https://jacky-dai.iteye.com/blog/868385

    预编译#define_#ifdef_#endif用法

    最近在看Linux底层代码,发现好多代码里有#define #ifdef #endif,找了个介绍详细的文章,供大家参考!

    #define——用法大全

    详细介绍define用法 Definition[定义]: Usage[用法]: Instances[实例]:

    #define的使用技巧

    写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义……

    #define VS typedef

    #define是预处理指令 typedef是在编译时处理的 typedef与#define的区别

Global site tag (gtag.js) - Google Analytics