一、C與C++的細微區(qū)別
在函數(shù)聲明中:
無論是C還是在C++,都
可以省略形式參數(shù)名。
但是,通常都
不建議省略形式參數(shù)名。
在函數(shù)定義中:
1. 當需要使用形式參數(shù)的時候,顯然,必須給形式參數(shù)命名。
2. 當不需要使用形式參數(shù)的時候,C與C++有微小差異:
——
C不能省略形式參數(shù)名,
即使不使用。
——
C++可以省略形式參數(shù)名,
如果不使用。
—— 并且在C++中,如果給不使用的形式參數(shù)命名,可能會得到一個
警告。
二、示例:
#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;
}
三、三個函數(shù)分別實現(xiàn)如下:
三、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
錯誤: 省略參數(shù)名
——在C++中正確,且無警告。
三、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'
警告: 未使用的參數(shù)‘name’
在gcc中,打開這個警告的選項是
-Wunused-parameter。
該選項包含在-Wall中。
三、3
void greeting_nowarning(const char* name) {
(void)name;
printf("hello OwnWaterloo\n");
}
在C和C++中都正確,并且無警告。
相關鏈接:
——示例代碼
http://immature.googlecode.com/svn/trunk/iMmature/sample/omit_parameter_name

本
作品采用
知識共享署名-非商業(yè)性使用-相同方式共享 2.5 中國大陸許可協(xié)議進行許可。
轉載請注明 :
文章作者 - OwnWaterloo
發(fā)表時間 - 2009年04月26日
原文鏈接 -
http://www.shnenglu.com/ownwaterloo/archive/2009/04/26/omit_parameter_name.html
posted on 2009-04-26 15:01
OwnWaterloo 閱讀(14641)
評論(5) 編輯 收藏 引用