0

我不明白为什么以下代码无法编译:

#include <iostream>
#define SHORT_NAME 4;

int func(int arg)
{
    return arg;
}

int main()
{
    return func(SHORT_NAME); // Error: expected a ')'
}

我应该改用const int SHORT_NAME = 4第 2 行吗?

4

3 回答 3

7

从宏中删除分号,SHORT_NAME因为在预处理后它被扩展为:

 return func(4;);

const int按照您在问题中的建议使用。有关const.

于 2012-12-13T10:47:36.130 回答
2

预处理器扩展 MACRO 名称。所以这:

return func(SHORT_NAME);  

变成这样:

return func(4;); 

这绝对是一个语法错误,不是吗?

因此,如果您没有定义 MACRO,;那么它将起作用:

#define SHORT_NAME 4  //without ;

我应该在第 2 行使用 const int SHORT_NAME = 4 吗?

是的。去吧。无论如何(在大多数情况下),宏都是邪恶的。

于 2012-12-13T10:48:09.757 回答
2

您的定义中不需要分号。改写这个

#define SHORT_NAME 4

但是const int在使用 C++ 时 using 绝对是更好的选择。

于 2012-12-13T10:48:22.893 回答