尝试编写宏,但不确定哪里出了问题
Trying to write a macro, but not sure what's wrong
我一直在研究宏。我看到了一个有趣的 post,我可以在其中用类似结构 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 '{'
不确定我做错了什么。我刚刚从上面的超链接中复制了代码并修改了代码。任何帮助将不胜感激!
考虑宏扩展成什么:
int result = do {
auto var1 = x;
auto var2 = y;
var1 > var2 ? var1 : var2;
} while (0);
这不是有效的 C++,因为循环在 C++ 中没有 return 值。
哦,我确实注意到了宏的一个小问题。参数名称大写 (X, Y) 但用作小写 (x, y)。这不会按预期工作。您必须在宏主体中使用与宏参数相同的名称。
我一直在研究宏。我看到了一个有趣的 post,我可以在其中用类似结构 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 '{'
不确定我做错了什么。我刚刚从上面的超链接中复制了代码并修改了代码。任何帮助将不胜感激!
考虑宏扩展成什么:
int result = do {
auto var1 = x;
auto var2 = y;
var1 > var2 ? var1 : var2;
} while (0);
这不是有效的 C++,因为循环在 C++ 中没有 return 值。
哦,我确实注意到了宏的一个小问题。参数名称大写 (X, Y) 但用作小写 (x, y)。这不会按预期工作。您必须在宏主体中使用与宏参数相同的名称。