C中不能省略形參名字
阿新 • • 發佈:2019-01-08
一、C與C++的細微區別
在函式宣告中:
無論是C還是在C++,都可以省略形式引數名。
但是,通常都不建議省略形式引數名。
在函式定義中:
1. 當需要使用形式引數的時候,顯然,必須給形式引數命名。
2. 當不需要使用形式引數的時候,C與C++有微小差異:
—— C不能省略形式引數名, 即使不使用。
—— C++可以省略形式引數名,如果不使用。
—— 並且在C++中,如果給不使用的形式引數命名,可能會得到一個警告。
二、示例:
#include <stdio.h>void greeting_omit(constchar* name);
void greeting_unuse(const char* name);
void greeting_nowarning(constchar* name);
int main(void) {
greeting_omit("");
greeting_unuse("");
greeting_nowarning("");
(void)getchar();
return0;
}
三、三個函式分別實現如下:
三、1
void greeting_omit(constchar* ) {
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++中正確,且無警告。
三、2
void greeting_unuse(constchar* 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
void greeting_nowarning(constchar* name) {
(void)name;
printf("hello OwnWaterloo\n");
}
在C和C++中都正確,並且無警告。
在函式宣告中:
無論是C還是在C++,都可以省略形式引數名。
但是,通常都不建議省略形式引數名。
在函式定義中:
1. 當需要使用形式引數的時候,顯然,必須給形式引數命名。
2. 當不需要使用形式引數的時候,C與C++有微小差異:
—— C不能省略形式引數名, 即使不使用。
—— C++可以省略形式引數名,如果不使用。
—— 並且在C++中,如果給不使用的形式引數命名,可能會得到一個警告。
二、示例:
#include <stdio.h>void greeting_omit(constchar* name);
void greeting_unuse(const
void greeting_nowarning(constchar* name);
int main(void) {
greeting_omit("");
greeting_unuse("");
greeting_nowarning("");
(void)getchar();
return0;
}
三、三個函式分別實現如下:
三、1
void greeting_omit(constchar* ) {
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++中正確,且無警告。
三、2
void greeting_unuse(constchar* 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
void greeting_nowarning(constchar* name) {
(void)name;
printf("hello OwnWaterloo\n");
}
在C和C++中都正確,並且無警告。