编译器要求我在默认函数参数的等号前添加空格

Compiler requires me to add space before equal sign for default function parameter

本文关键字:空格 添加 参数 函数 默认 编译器      更新时间:2023-10-16

如果我写:

void compute(char*, char*=0) { // no space before =
}
int main()
{
    compute(0);
}

main.cpp:1:25: error: expected ')'
void compute(char*, char*=0) {
                        ^
main.cpp:1:13: note: to match this '('
void compute(char*, char*=0) {
            ^
main.cpp:6:5: error: no matching function for call to 'compute'
    compute(0);
    ^~~~~~~
main.cpp:1:6: note: candidate function not viable: requires 2 arguments, but 1 was provided
void compute(char*, char*=0) {
     ^
2 errors generated.

如果我在=: char* =0前加空格,那就没问题了。

这是另一个最令人烦恼的解析问题吗?

正如@Bo Persson所说,*=是一个现有的运营商。在这种情况下,x*=0将简单地将x乘以0,而不是您希望实现的结果。