Функции с параметрами по-умолчанию
, Компилятор GCC
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.14] |
|
|
Функции с параметрами по-умолчанию
, Компилятор GCC
|
Сообщ.
#1
,
|
|
|
|
Компилятор GCC.
Есть программа: ![]() ![]() int f(int a = 0); int main() { std::cout<<f(2); return 0; } int f(int a = 0) { return a; } Компилятор ругаеться: Цитата error: after previous specification in `int f(int)' line 1 error: default argument given for parameter 1 of `int f(int)' line 11 Что это значит? Неужели в GCC нельзя использовать параметры по-умолчанию? P.S. Поиск не дал результатов, нашел только это: http://caxapa.ru/18298.html?hilite=%F3%EC%EE%EB%F7%E0%ED%E8%FE+GCC&todo=full |
|
Сообщ.
#2
,
|
|
|
|
параметр по умолчанию нужно указывать только в объявлении ф-ции...
|
|
Сообщ.
#3
,
|
|
|
|
Спасибо, будем знать
|
|
Сообщ.
#4
,
|
|
|
|
Цитата archimed7592 @ параметр по умолчанию нужно указывать только в объявлении ф-ции... Можно и в определении, но только если определение находится выше вызова функции. Ошибка в примере в том, что агумент по умолчанию задан более одного раза. ![]() ![]() int f(int a); int f(int a = 0) // ok { return a; } int main() { std::cout << f(); return 0; } ![]() ![]() int f(int a = 0); int f(int a = 0); // error int f(int a) { return a; } ![]() ![]() int f(int a, int b = 1, int c = 2); //int f(int a = 3, int b = 1, int c = 2); // error int f(int a = 3, int b, int c) // ok { return a + b + c; } |
|
Сообщ.
#5
,
|
|
|
|
смысла большого указывать в определении не вижу... либо определение сразу является объявлением (вся реализация в хэдере), либо указывать только в объявлении (когда реализация в отдельном модуле)...
|
|
Сообщ.
#6
,
|
|
|
|
Цитата archimed7592 @ смысла большого указывать в определении не вижу... Насчет смысла не знаю, я написал из-за чего ругается компилятор. |