【发布时间】:2015-11-10 00:47:19
【问题描述】:
我一直在玩宏。我看到了一篇有趣的帖子,我可以在其中构造我的宏,比如结构 here。我已经尝试实现一个,这就是我目前拥有的。
#define Max(X,Y) \
do { \
auto var1 = x; \
auto var2 = y; \
var1 > var2 ? var1 : var2; \
} while (0)
在我的主要功能中
void main()
{
int result = Max(10, 5)
}
但我遇到了所有这些错误,
error C2059: syntax error : 'do'
error C2143: syntax error : missing ';' before '{'
不知道我做错了什么。我只是从上面的超链接中复制了代码并修改了代码。任何帮助将不胜感激!
【问题讨论】:
-
为什么要使用宏?只需将它填充到一个函数中,然后让编译器内联它。
-
宏不是函数,也不是 lambda,因为您显然正在使用它们...
-
@CaptainObvlious 我删除了 c++ 标签,但我只是想玩玩并了解如何使用宏。
-
哦,像
result = Max(++i, x)这样的操作会让调试变得非常有趣。 -
您知道宏是文本替换。然后你应该看到故障在于使用。
int result = do {...} while (0);无效。
标签: macros