Параметры по умолчанию в C - PullRequest
32 голосов
/ 08 февраля 2012

Можно ли установить значения параметров по умолчанию в C?Например:

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

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

Visual Studio 2008 жалуется на наличие синтаксической ошибки при отображении -void (int a, int b = 10).Если это не разрешено в C, какая альтернатива?Пожалуйста, дайте мне знать.Спасибо.

Ответы [ 4 ]

52 голосов
/ 08 февраля 2012

Параметры по умолчанию - это функция C ++.

C не имеет параметров по умолчанию.

13 голосов
/ 08 февраля 2012

Это невозможно в стандартном C. Одна альтернатива заключается в кодировании параметров в имя функции, например,

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

void display_with_b(int a, int b){
    //do something
}
5 голосов
/ 08 февраля 2012

В C. нет параметров по умолчанию.

Один из способов получить это - передать указатели NULL, а затем установить значения по умолчанию, если передан NULL.Это опасно, поэтому я бы не советовал, если вам действительно не нужны параметры по умолчанию.

Пример

function ( char *path)
{
    FILE *outHandle;

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

}
2 голосов
/ 08 февраля 2012

Не так ...

Вы можете использовать массив int или varargs и заполнить недостающие данные в вашей функции.Вы теряете проверки времени компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...