web-dev-qa-db-ja.com

Cのデフォルトパラメータ

Cのデフォルトパラメータの値を設定することは可能ですか?例えば:

void display(int a, int b=10){
//do something
}

main(){
  display(1);
  display(1,2); // override default value
}

Visual Studio 2008、-void display(int a、int b = 10)に構文エラーがあるという苦情。これがCで合法でない場合、代替案は何ですか?私にお知らせください。ありがとう。

32
user1128265

デフォルトのパラメーターはC++機能です。

Cにはデフォルトのパラメーターはありません。

52
ouah

標準Cでは不可能です。1つの代替方法は、パラメータを関数名にエンコードすることです。

void display(int a){
    display_with_b(a, 10);
}

void display_with_b(int a, int b){
    //do something
}
13
Joni

Cにはデフォルトのパラメーターはありません。

これを実現する1つの方法は、NULLポインターを渡し、NULLが渡された場合に値をデフォルトに設定することです。ただし、これは危険なので、デフォルトのパラメーターが本当に必要でない限り、お勧めしません。

function ( char *path)
{
    FILE *outHandle;

    if (path==NULL){
        outHandle=fopen("DummyFile","w");
    }else
    {
        outHandle=fopen(path,"w");
    }

}
5
RussS

そうではない...

Int配列または可変引数を使用して、関数内の欠損データを埋めることができます。ただし、コンパイル時のチェックは失われます。

2
Dtyree