C與C++的細微區別——省略形式參數名

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++中都正確,而且無警告。
相關文章
相關標籤/搜索