宏问题,有多个语句

宏问题,有多个语句,第1张

概述#define RUN_SOME_STUFF(...) { \ int x = 0; \ printf("[INFO] Do some stuff here ... %d\n", +
#define RUN_SOME_STUFF(...) {                                        \            int x = 0;                                               \            printf("[INFO] Do some stuff here ... %d\n",++x);       \            {__VA_ARGS__}                                            \            printf("[INFO] end some stuff here\n");                  \        }

我是如何使用它的:

...RUN_SOME_STUFF({    // mIDdle:    int y;    y = 100;    printf("MIDdle\n"); });...

现在,我知道这被认为是一个(非常)丑陋的宏,但这是我寻求帮助的主要原因.

第一个问题是,如果出现任何类型的错误,编译器将显示宏的最后一行,作为不正确的行.打印只是简化问题的示例(在两个代码片段中),因此可能有20行复杂的嵌套代码,在这种情况下非常烦人.

第二个是__liNE__以相同的错误方式解决

&安培;我相信还有更多……

1.有没有办法纠正上述问题,以便正确解决这些问题? (可能是某种编译器选项?,我正在使用VS2008 / 2010)

2.如果没有办法以“可爱”的方式使用宏,我还有其他选择吗?简单地说,我只想在其他代码“周围”(之前和之后)运行一些代码.

编辑:我会经常使用这个宏,总是使用不同的“中间”内容,所以我不能每次都写一个内联函数.

解决方法 您可以将宏拆分为两部分.不漂亮,但它在宏配对时有效. RUN_BEGIN以下;和RUN_END;写的是他们需要一个分号.

#define RUN_BEGIN \    do { \        int x = 0;   \        printf("[INFO] Do some stuff here ... %d\n",++x);  \        {  \            (voID)0#define RUN_END  \        } \        printf("[INFO] end some stuff here: %d\n",x ); \    } while (0)
总结

以上是内存溢出为你收集整理的宏问题,有多个语句全部内容,希望文章能够帮你解决宏问题,有多个语句所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1229793.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存