1、C與C++的細微區別
在函數聲明中:
不管是C仍是在C++,都
能夠省略形式參數名。
可是,一般都
不建議省略形式參數名。
在函數定義中:
1. 當須要使用形式參數的時候,顯然,必須給形式參數命名。
2. 當不須要使用形式參數的時候,C與C++有微小差別:
——
C不能省略形式參數名,
即便不使用。
——
C++能夠省略形式參數名,
若是不使用。
—— 而且在C++中,若是給不使用的形式參數命名,可能會獲得一個
警告。
2、示例:
#include
<
stdio.h
>
void
greeting_omit(
const
char
*
name);
void
greeting_unuse(
const
char
*
name);
void
greeting_nowarning(
const
char
*
name);
int
main(
void
) {
greeting_omit(
""
);
greeting_unuse(
""
);
greeting_nowarning(
""
);
(
void
)getchar();
return
0
;
}
3、三個函數分別實現以下:
3、1
void
greeting_omit(
const
char
*
) {
printf(
"
hello world\n
"
);
}
——在C中是錯誤:
1. msvc :
error C2055: expected formal parameter list, not a type list
error C2055: 應輸入形參表,而不是類型表
2. gcc : (報錯更清晰一些)
error: parameter name omitted
錯誤: 省略參數名
——在C++中正確,且無警告。
3、2
void
greeting_unuse(
const
char
*
name) {
printf(
"
hello Cherrie\n
"
);
}
在C和C++中都正確,但可能獲得一個警告:
1. msvc :
warning C4100: 'name' : unreferenced formal parameter
warning C4100: 「name」: 未引用的形參
2. gcc :
warning: unused parameter 'name'
警告: 未使用的參數‘name’
在gcc中,打開這個警告的選項是
-Wunused-parameter。
該選項包含在-Wall中。
3、3
void
greeting_nowarning(
const
char
*
name) {
(
void
)name;
printf(
"
hello OwnWaterloo\n
"
); }
在C和C++中都正確,而且無警告。