将定义 int 传递给函数作为参数

Passing define int to function as an argument

本文关键字:函数 参数 定义 int      更新时间:2023-10-16

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

#include <iostream>
#define SHORT_NAME 4;
int func(int arg)
{
    return arg;
}
int main()
{
    return func(SHORT_NAME); // Error: expected a ')'
}

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

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

 return func(4;);

或者按照您在问题中的建议使用const int。请参阅 "静态常量" vs "#define" vs "enum" 有关宏与const的讨论。

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

return func(SHORT_NAME);  

变成这样:

return func(4;); 

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

因此,如果您在没有;的情况下定义宏,那么它将起作用:

#define SHORT_NAME 4  //without ;

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

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

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

#define SHORT_NAME 4

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