Подтвердить что ты не робот

Параметры по умолчанию в 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, какова альтернатива? Пожалуйста, дайте мне знать. Спасибо.

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Пример

function ( char *path)
{
    FILE *outHandle;

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

}

Ответ 4

Не так...

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