Как "подавить" выдачу конкретных варнингов в конкретных мест

Тема в разделе "Общие вопросы по С и С++", создана пользователем ДокторТуамОсес2, 19 июн 2009.

  1. ДокторТуамОсес2

    ДокторТуамОсес2 Well-Known Member

    Регистрация:
    9 июн 2009
    Сообщения:
    99
    Симпатии:
    0
    Не хочу, чтобы выдавались конкретные варнинги, относящиеся к определённым областям заданных файлов.

    Как это сделать?

    Про "Warning Level" в настройках студии я в курсе.

    Но мне нужно подавить варнинг с конкретным номером (К примеру, C4244). И только в определённых местах заданных файлов. В том числе в системных файлах библиотек компилятора.

    Можно это как-либо сделать?
    ...
    Да.Компилятор Microsoft Visual C++ 6.0 (MSVC++ 6.0)
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    почитай про #pragma warning
     
  3. ДокторТуамОсес2

    ДокторТуамОсес2 Well-Known Member

    Регистрация:
    9 июн 2009
    Сообщения:
    99
    Симпатии:
    0
    Почитал. Вот ответ:

    Код (Text):
    #pragma warning(push)
    #pragma warning(disable:4700 4785)
    //в этом регионе кода варнинги 4700 и 4785 отключены
    ....
    #pragma warning(pop)
    //восстановили исходное состояние варнингов 4700 и 4785
    // (возможно они и до входа в наш участок были отключены)
    // тогда их состояние после команды #pragma warning(pop) не изменится
     
  4. ДокторТуамОсес2

    ДокторТуамОсес2 Well-Known Member

    Регистрация:
    9 июн 2009
    Сообщения:
    99
    Симпатии:
    0
    Почему в нижеприведённой программе не подавляется печать варнинга C4700?
    А как его можно подавить?

    Код (Text):
    #include <iostream>
    using namespace std;

    int main ()
    {
    int     int_A , int_B;

    #pragma warning ( disable: 4700 )   // warning C4700 должен быть подавлен

    int_A = int_B;                  // warning C4700: local variable 'int_B'
    // used without having been initialized
    cout << "main running " << endl;
    return 0;

    }
     
  5. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Предупреждения надо исправлять, а не подавлять. Попробуйте еще на десятке программерских форумов свою проблему расписать, может будет быстрее, чем открыть MSDN и почитать.
     
  6. ДокторТуамОсес2

    ДокторТуамОсес2 Well-Known Member

    Регистрация:
    9 июн 2009
    Сообщения:
    99
    Симпатии:
    0
    Предлагаете мне самостоятельно подправить все микрософтовские библиотеки?


    Не нашёл на MSDN. Помогите
     
  7. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Нет, исправляйте свой код
    http://msdn.microsoft.com/en-us/library/2c8f766e(VS.71).aspx
     
  8. ДокторТуамОсес2

    ДокторТуамОсес2 Well-Known Member

    Регистрация:
    9 июн 2009
    Сообщения:
    99
    Симпатии:
    0
    Дык варнинги-то относятся к системным библиотекам.
     
  9. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Можно конкретный пример?
     
  10. Neutrino

    Neutrino Гость

     
  11. alexsid

    alexsid Гость

    переменные проинициализируй, можно также снизить уровень варнингов в настройках проекта

    Наскока помню , подавлять варнинги в теле функции низя...
     
  12. DSDante

    DSDante Гость

    Если очень нужно подавить предупреждения в одном файле, то можно кликнуть по файлу правой кнопкой -> Properties -> C/C++ -> Advanced -> Disable Specific warnings (так, по крайней мере, в VC 2008).
    Конечно, лучше объявлять с инициализацией: int int_A, int_B=0;
    А еще лучше переписать программу так, чтобы не копировать мусор, который содержался в переменных (он не годится даже как генератор случайных чисел).
    Это не ошибки стандартных библиотек, просто они создаются не для хаков (в изначальном значении слова), а для легко читаемого, поддерживаемого и расширяемого кода.
     
Загрузка...

Поделиться этой страницей