试着写一个宏,但不确定是什么错

时间:2015-11-10 00:47:19

标签: macros

我一直在玩宏。我看到一篇有趣的帖子,我可以在结构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 '{'

不确定我做错了什么。我只是从上面的超链接复制代码,只是修改了代码。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

考虑宏扩展到的内容:

int result = do {
     auto var1 = x;
     auto var2 = y;
     var1 > var2 ? var1 : var2;
} while (0);

这不是有效的C ++,因为循环在C ++中没有返回值。

哦,我确实注意到宏的一个小问题。参数名称大写(X,Y)但用作小写(x,y)。这不会按预期工作。您必须在宏体中使用与宏参数相同的名称。