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

C++ 编译器要求我在默认函数参数的等号之前添加空格,c++,C++,如果我写: void compute(char*, char*=0) { // no space before = } int main() { compute(0); } 通用条款: 如果在=:char*=0之前添加空格,则一切正常 这是最麻烦的解析问题的另一个例子吗?正如@Bo Persson所说,*=是一个现有的操作符。在这种情况下,x*=0只需将x乘以0,而不是您希望实现的结果 没有。这是一个“规则”。*=是一个现有的操作符,就像x*=2将x乘以2一样。 main.cpp:1

如果我写:

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

int main()
{
    compute(0);
}
通用条款:

如果在
=
char*=0
之前添加空格,则一切正常


这是最麻烦的解析问题的另一个例子吗?

正如@Bo Persson所说,
*=
是一个现有的操作符。在这种情况下,
x*=0
只需将x乘以0,而不是您希望实现的结果

没有。这是一个“规则”。
*=
是一个现有的操作符,就像
x*=2
x
乘以2一样。
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.