在C++中自定义宏的简单方法

2025-05-29 0 40

可以使用定义没有返回值的“函数”。例如:

复制代码 代码如下:

#define PrintMax(a, b) \\ do \\ { \\ int x = a, y = b; \\ printf("Max: %d\\n", x > y ? x : y);\\ } while (0) // … PrintMax(3, 4);

这样的“函数”与真正意义上的函数有本质的区别,因为是一个编译前行为,仅仅是编译前对文本进行替换。在Python源码中,经常可以看到下面类似的定义:

?

1
#define foo(x) \\ do { \\ ... \\ } while (0)

为什么要使用do { … } while (0)这样的语法而不直接使用 { } 呢?定义了上面这个,我们就可以在代码中使用类似这样的代码:foo(3); 注意结尾的分号,它看起来很像一个函数,实现上它表示一条语句。如果使用 { } 来代替 do { … } while (0),那么使用分号显然是个语法错误。

使用时,有几点要特别注意:

要特别留心空格。下面的两个是一样的:

?

1
#define foo(x) (x << 2) #define boo (x) (x << 2) //注意括号前面的空格

给类型取别名与typedef有很大的区别。例如:

复制代码 代码如下:

#define INT int * INT p1, p2; // p1是指针,p2是一个int变量 typedef int * INT; INT p1, p2; // p1, p2都为指针 //————————————————— #define LONG long unsigned LONG v1; // v1是一个无符号的long变量 typedef long LONG; unsigned LONG v1; // 错误哦~~~

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 在C++中自定义宏的简单方法 https://www.kuaiidc.com/107313.html

相关文章

发表评论
暂无评论