На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Модераторы: Qraizer
  
> Функции с параметрами по-умолчанию , Компилятор GCC
    Компилятор GCC.
    Есть программа:

    ExpandedWrap disabled
      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 нельзя использовать параметры по-умолчанию? :blink:
    P.S.
    Поиск не дал результатов, нашел только это: http://caxapa.ru/18298.html?hilite=%F3%EC%EE%EB%F7%E0%ED%E8%FE+GCC&todo=full
      параметр по умолчанию нужно указывать только в объявлении ф-ции...
        Спасибо, будем знать :)
          Цитата archimed7592 @
          параметр по умолчанию нужно указывать только в объявлении ф-ции...

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

          ExpandedWrap disabled
            int f(int a);
             
            int f(int a = 0) // ok
            {
                return a;  
            }
             
            int main()
            {
                std::cout << f();
             
                return 0;
            }


          ExpandedWrap disabled
            int f(int a = 0);
            int f(int a = 0); // error
             
            int f(int a)
            {
                return a;  
            }


          ExpandedWrap disabled
            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;  
            }
            смысла большого указывать в определении не вижу... либо определение сразу является объявлением (вся реализация в хэдере), либо указывать только в объявлении (когда реализация в отдельном модуле)...
              Цитата archimed7592 @
              смысла большого указывать в определении не вижу...

              Насчет смысла не знаю, я написал из-за чего ругается компилятор. ;)
              Сообщение отредактировано: LPBOY -
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0295 ]   [ 16 queries used ]   [ Generated: 29.03.26, 18:15 GMT ]