Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
hoggy
6535 / 2715 / 469
Регистрация: 15.11.2014
Сообщений: 5,993
Завершенные тесты: 1
#1

[c++, msvc] #pragma suppress warning - C++

04.05.2015, 22:39. Просмотров 369. Ответов 1
Метки нет (Все метки)

Всем привет.

Вижал студия 2013.

Рассмотрим код:

http://rextester.com/FCO39975

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//Title of this code
//Compiler Version 18.00.21005.1 for x86
 
#include <iostream>
 
int main()
{
    std::cout << "Hello, world!\n";
    
    #pragma warning(push)
    #pragma warning(disable: 4101)
    
    int val_1;
    int val_2;
    int val_3;
        
    std::cout<<"--------------\n";
    
    #pragma warning(pop)
    
    //source_file.cpp(15) : warning C4101: 'val_3' : unreferenced local variable
    //source_file.cpp(13) : warning C4101: 'val_1' : unreferenced local variable
    //source_file.cpp(14) : warning C4101: 'val_2' : unreferenced local variable
    
    // если закомментировать #pragma warning(pop), 
    // предупреждение пропадет
    
}
Вопрос: почему, предупреждение не подавляется,
если в коде фигурирует #pragma warning(pop) ?

Добавлено через 2 минуты
вот так все прекрасно подавилось:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
#pragma warning(push)
#pragma warning(disable: 4101)
int main()
{
    std::cout << "Hello, world!\n";
    
    
    
    int val_1;
    int val_2;
    int val_3;
        
    std::cout<<"--------------\n";
}
#pragma warning(pop)
видимо, что-то связанное с областью действия прагм...

Добавлено через 8 минут
не подавилось...


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
int main()
{
    std::cout << "Hello, world!\n";
    
 
    #pragma warning(push)
    #pragma warning(disable: 4101)
    {
        int val_1;
        int val_2;
        int val_3;
    }
        
    std::cout<<"--------------\n";
    #pragma warning(pop)
    
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2015, 22:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос [c++, msvc] #pragma suppress warning (C++):

Установка MSVC 97 на win 8.1 x64 - C++
Добрый пытаюсь установить msvc 97 на восьмерку - не получается, при окошке загрузки зависает и вылазит окошка поиска проблем. ...

Код, который ломает MSVC компилятор (просто делюсь) - C++
Привет! Иногда приходится кое-что делать под виндой и сегодня случайно наткнулся на такой креш void f(const std::string &amp;s) { ...

Различия использования регулярных выражений и генераторов парсеров в GCC и MSVC - C++
Я слышал что G++ и MSVC используют lex и bison для построения дерева токенов и парсинга. А клэнг свой какой то язык, который обрабатывает...

#pragma команды для ХЕ(ХЕ2) - C++ Builder
Здрасте всем. :) Я знаю что у всех компляторов команды #pragma собственные... можете дать их лист для ХЕ или ХЕ2, с обяснением что...

Что такое #pragma hrdstop - C++ Builder
не могу понят что такое #pragma hrdstop я новичок еще(

Pragma link - что за зверь и для чего нужно? - C++ Builder
Обычно, когда добавляешь к проекту сторонний компонент, то в тексте юнита появляется запись наподобие #pragma link &quot;имя_компонента&quot;. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zenden2k
43 / 28 / 8
Регистрация: 21.04.2015
Сообщений: 82
05.05.2015, 16:14 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
http://stackoverflow.com/a/29530960/4569791

Some warnings are 'function scope' and cannot be suppressed by using #pragma warning(suppress: 4101). They also, as you have noted, cannot be disabled by just doing it around the specific line. You must disable this warning for the whole function:

C++
1
2
3
4
5
6
#pragma warning(push)
#pragma warning(disable: 4101)
int main() {
    int i;
}
#pragma warning(pop)
Note also that for warnings that are specific to a line rather than a scope, the use of #pragma warning(suppress: xxx) is specific to the next actual line in the file.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2015, 16:14
Привет! Вот еще темы с ответами:

Зачем в MSVC дублируются типы данных? - C++ Builder
Вопрос из любопытства: в VisualC++ используется множество типов данных, которые просто дублируют базовые C-шные. И если появление...

О #pragma warning(disable: 4786) - C++
Вот создаю пустое приложение Win32 Console Application. Добавляю к примеру файл ex.cpp со следующим содержанием: #include &lt;string&gt; ...

Ошибка (#pragma warning disable 1591) - C#
Есть класс BaseElement создал прослойку DBML,появилась такая ошибка #pragma warning disable 1591 тут DataClasses1.designer.cs ...

Отключение предупреждений без "pragma warning" - C++
есть ли альтернативная функция или команда для # pragma warning(disable:....); которая отключает предупреждения


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru