Флейм
GameDev.ru / Флейм / Форум / Вопрос по pragma warning

Вопрос по pragma warning

Поделиться
war_zesПостоялецwww8 ноя. 20172:32#0
Решил включить полную проверку /Wall в студии чтобы проверить свой код.

Сначала создал пустой проект
далее в stdafx.h написал такой код

#pragma once

#pragma warning( push )  
#pragma warning( disable : 4820 )  
#pragma warning( disable : 4514 )  
#pragma warning( disable : 4710 )  
#include <algorithm>
#include <utility>
#include <cstdlib>
#include <ctime>

#pragma warning( pop )

В MSDN написано что именно так нужно отключать варнинги в заголовках.

При написании файлов заголовков push и pop можно использовать для гарантии того, что изменения состояния предупреждения, внесенные пользователем, не помешают правильной компиляции заголовков. Используйте push в начале заголовка, а pop — в конце. Например, если имеется заголовок, который не компилируется правильно на пороге предупреждений 4, следующий код изменит порог предупреждений на 3, а затем восстановит исходный порог предупреждений в конце заголовка.

Но у меня не получается. при компиляции stdafx он выдает простыню варнингов  с этими же номерами. (а если поставить /WX то ожидаемо будет ошибка компиляции)

А вот если закоментировать #pragma warning( pop ) то тогда варнингов не будет. Но ведь в этом случае они отключаются на весь проект - а мне это не нужно.

Как сделать?

Правка: 8 ноя. 2017 2:33

war_zesПостоялецwww8 ноя. 20172:48#1
Вот тут они тоже так делают
https://habrahabr.ru/company/pvs-studio/blog/227521/

Но у меня при компиляции stdafx.cpp лезут эти варнинги

Panzerschrek[CN]Участникwww8 ноя. 20176:00#2
war_zes
> /Wall
> MSDN

Используй лучше компилятор, а не не микросовтовскую генерилку предупреждений.

war_zesПостоялецwww8 ноя. 20176:11#3
Panzerschrek[CN]
> Используй лучше компилятор, а не не микросовтовскую генерилку предупреждений.
????
war_zesПостоялецwww10 ноя. 20172:51#4
Я один чтоли столкнулся с этой проблемой?
kiparПостоялецwww10 ноя. 201710:00#5
war_zes
> А вот если закоментировать #pragma warning( pop ) то тогда варнингов не будет.
> Но ведь в этом случае они отключаются на весь проект - а мне это не нужно.
а они на каких строчках - может не на хидерах а на тех местах где используются функции из этих хидеров?

А так да, msvc без варнингов звучит как шутка, он даже на хелловорлд 5 варнингов выдает.

war_zesПостоялецwww10 ноя. 201711:16#6
kipar
> а они на каких строчках - может не на хидерах а на тех местах где используются
> функции из этих хидеров?
там был int main(){return 0;}

Я создал новый проект, и только написал инклюды.

как я понимаю - оно как раз не должно было делать варнинги

если убрать #pragma warning( pop ) то варнингов не будет. если ее вставить во всех cpp файлах вот так:

#include "stdafx.h"
#pragma warning( pop )

То также варнингов не будет, но это уродливо.

Варнинги сыпятся при компиляции stdafx. То есть во всех остальных cpp их уже не будет. Но это тоже не вариант - stdafx просто заваливает лог варнингами.

/ Форум / Флейм / Программирование

2001—2017 © GameDev.ru — Разработка игр