powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Visual Studio and Warnings - не баг ли это?
2 сообщений из 2, страница 1 из 1
Visual Studio and Warnings - не баг ли это?
    #39543539
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос будет не про Qt, а про то как Студия работает с уровнями предупреждений.

Прилагается простейший проект на VS-2015 и Qt 5.6. Это почти тот проект, который генерируется по умолчанию. Проект без предупреждений собирается на уровне предупреждений /Level3. Но допустим мы перфекционисты и выставляем /Level4, переходим в конфигурацию Release и получаем миллион варнингов на код самого Qt. Ставится задача выключить эти предупреждения только для кода Qt, но не для нашего.

Я тут везде компилирую файл qtwarnings.cpp. Было так в файле qtwarnings.h и была куча предупреждений:

Код: plaintext
1.
2.
#include <QtWidgets/QMainWindow>
#include "ui_qtwarnings.h"



Сделаем так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#pragma warning(push, 3)
#include <QtWidgets/QMainWindow>
#pragma warning(pop)

#pragma warning(push, 3)
#include "ui_qtwarnings.h"
#pragma warning(pop)



Предупреждения остались. Почему? Ведь раньше на третьем уровне собиралось без предупреждений.

Сделаем так:

Код: plaintext
1.
2.
3.
4.
5.
#pragma warning(push, 3)
#include <QtWidgets/QMainWindow>

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



Предупреждения исчезли. Но почему?! Ведь это же тоже самое что было в предыдущем варианте!

Теперь сделаем так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#pragma warning(push, 0)
#include <QtWidgets/QMainWindow>
#pragma warning(pop)

#pragma warning(push, 0)
#include "ui_qtwarnings.h"
#pragma warning(pop)



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

Теперь сделаем так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#pragma warning(push, 0)
#include <QtWidgets/QMainWindow>
#pragma warning(pop)

#pragma warning(push, 3)
#include "ui_qtwarnings.h"
#pragma warning(pop)



И в ответ ловим предупреждение:

Код: plaintext
1.
warning C4251: 'QVariant::d': struct 'QVariant::Private' needs to have dll-interface to be used by clients of class 'QVariant'


Но C4251 – это предупреждение первого уровня, а мы работаем на третьем!

PS: Ну где логика и как так может быть? Архив проекта прилагается.
...
Рейтинг: 0 / 0
Visual Studio and Warnings - не баг ли это?
    #39543540
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл архив проекта.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Visual Studio and Warnings - не баг ли это?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]