предупреждения в компиляторе борланд

Тема в разделе "LANGS.C", создана пользователем NoName, 28 июн 2008.

  1. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Как сделать так чтобы он не ругался на то что такая та параменная не используется, хотя на самом еделе она используется? Давно волнует этот вопрос.
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    NoName

    Покажи код.
     
  3. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Отключить данный warning в настройках. В Delphi на этот случай есть ещё и спец. директивы компилятору, но как они называются в Си - не в курсе.
     
  4. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    К слову: в 2005-м С++ есть тоже странная фишка.
    Вот такой код вызывает "not used" предупреждение:
    Код (Text):
    1. void foo ()
    2. {
    3.     int a;
    4. }
    А вот такой не вызывает:
    Код (Text):
    1. void foo ()
    2. {
    3.     CString a;
    4. }
    Надо полагать, что такое происходит из-за того, что CString - это шаблон.
     
  5. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    AsmGuru62
    Возможен также вариант, что такое происходит из-за того, что CString - это класс с непустым конструктором/деструктором. Смотрите:
    Код (Text):
    1. void Calculate1000000DigitsOfNumberPi()
    2. {
    3. CWaitCursor wc;
    4. ... // здесь идут выкладки, занимающие много времени и не использующие wc
    5. }
    CWaitCursor - это MFC-класс, конструктор которого устанавливает курсор в форме песочных часов, а деструктор восстанавливает стандартный курсор. Таким образом, пока работает функция, курсор будет иметь форму песочных часов. И фактически объявление "CWaitCursor wc;" играет важную роль. Но формально wc не используется. Вот из-за того, что возможны такие приколы, компилятор и не выдаёт предупреждения.
     
  6. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    diamond

    Все верно. Объект пользовательского типа уже сам по себе несет функциональность, а это значит что он не "not used"
     
  7. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    а если написать a=a тоже выдает варнинг?
     
  8. Nero_n

    Nero_n New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2008
    Сообщения:
    33
    а вот такой не вызывает:
    Код (Text):
    1. void foo ()
    2. {
    3.     int a;
    4.     a;
    5. }
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Nero_n

    И здесь все правильно. Вообще, все это какие-то детские примеры уровня преподавателя информатики в сельской школе. Читайте Стандарт, большинство вопросов отпадут сами собой.
     
  10. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    ключиком компилера -w- , или прагмами.
     
  11. SharipovNail

    SharipovNail Наиль

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    7
    Адрес:
    Москва
    Nero_n
    Вообще-то в таком случае может исполняться несколько инструкций (в зависимости от компилера). Например значение a может быть занесено в стэк, либо в регистр (либо одновременно туда и туда)... короче, это тоже не выход, если хочешь избавиться от предупреждений компилятора.

    NoName
    Читайте мануал для компилера и настраивайте...
     
  12. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    SharipovNail

    Это как раз-таки выход. РТФМ-те Стандарт.
     
  13. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Обычно пишут

    Код (Text):
    1. void foo(void)
    2. {
    3.     int a;
    4.     (void)a;
    5. }
    хотя лично я отключаю предупреждение для нужной функции.
    В Borland по-моему так:

    Код (Text):
    1. #pragma argsused
    2. void foo(void)
    3. {
    4.     int a;
    5. }
    Прагма влияет только на следующую за ней функцию и отключает предупреждение о неиспользованных переменных.