2012-02-07 2 views
25

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

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

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

Visual Studio 2008, жалобы, что есть ошибка синтаксиса в -void дисплее (Int А, внутр б = 10). Если это не является законным в C, какова альтернатива? Пожалуйста, дайте мне знать. Благодарю.

+1

Действительно, это не является законным в C. C также не имеет перегрузки. – Mysticial

+0

Возможный дубликат: http://stackoverflow.com/questions/1472138/c-default-arguments –

+0

http://stackoverflow.com/questions/2988038/default-values-on-arguments-in-c-functions-and- функция-перегрузка-в-c –

ответ

36

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

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

4

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

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

Пример

function (char *path) 
{ 
    FILE *outHandle; 

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

} 
9

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

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

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

+1. Мне также нравится практика в комментарии к [этот ответ] (http://stackoverflow.com/a/1472310/790070), где имя функции включает в себя количество параметров, которые она принимает. –

1

Не тот путь ...

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

Смежные вопросы