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.