我一直在玩宏。我看到一篇有趣的帖子,我可以在结构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 '{'
不确定我做错了什么。我只是从上面的超链接复制代码,只是修改了代码。任何帮助将不胜感激!
答案 0 :(得分:2)
考虑宏扩展到的内容:
int result = do {
auto var1 = x;
auto var2 = y;
var1 > var2 ? var1 : var2;
} while (0);
这不是有效的C ++,因为循环在C ++中没有返回值。
哦,我确实注意到宏的一个小问题。参数名称大写(X,Y)但用作小写(x,y)。这不会按预期工作。您必须在宏体中使用与宏参数相同的名称。