-1
ために、等号の前にスペースを追加するために私を必要とします。コンパイラは、デフォルトの関数パラメータ私が書く場合
void compute(char*, char*=0) { // no space before =
}
int main()
{
compute(0);
}
gccのoutputs:
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.
私はスペースを追加した場合=
befor:char* =0
そのすべてOK。
これは、最も厄介な解析の問題の別の例ですか?
いいえ。それは「最大の狂気」(https://upload.wikimedia.org/wikipedia/commons/f/f4/The_Scream.jpg)のルールです。 –
'* ='は既存の演算子で、 'x * = 2'のように' x'に2を掛けます。 –