这是一个代码示例
#define S 113
double some_func1()
{
return S;
}
double some_funcN( float S )
{
return S/0.1;
}
当我尝试编译它时,出现此错误:
错误C2143:语法错误:“常量”前缺少“)”
我想知道是否可以在不重命名'S'变量的情况下进行修复?
答案 0 :(得分:2)
令牌S
会在出现的所有位置替换为113
。您可以通过以下几种方法来解决此问题:
将参数重命名为some_funcN
:
double some_funcN( float n )
{
return n/0.1;
}
在函数前取消定义常量,在函数后重新定义常量。这样做的缺点是S
是在多个位置定义的,因此我不建议这样做:
#undef S
double some_funcN( float S )
{
return S/0.1;
}
#define S 113
将S
从宏更改为变量。这样可以使变量作用域规则生效,从而使功能参数S
掩盖在文件作用域声明的变量S
的定义。
const int S = 113;