VC ++ 2010: компиляция с / Wall - PullRequest
3 голосов
/ 23 мая 2011

Я бы хотел скомпилировать свой проект с / Wall.

Когда я делаю это, я получаю тонны предупреждений из стороннего кода (библиотеки повышения, другие файлы заголовков системы). Единственное место, где я включаю эти сторонние заголовочные файлы, - это мой предварительно скомпилированный заголовок (stdafx.h).

Я пробовал это (в stdafx.h)

#pragma warning(push,3)
    // include all the third-party headers here
#pragma warning(pop)

для компиляции всего стороннего кода с предупреждением уровня 3.

Однако я по-прежнему получаю сотни предупреждений из таких файлов, как math.h, xmemory, vector, string_generator.hpp (boost.uuid), placeholders.hpp (boost.asio), ...

Как я могу убедиться, что компилирует весь сторонний код с предупреждением уровня 3 при компиляции моего собственного кода со всеми включенными предупреждениями?

Ответы [ 3 ]

1 голос
/ 23 мая 2011

/ W4 более реалистичен, чем / Wall.Я обычно использую заголовки stl, tr1 и windows с / W4.Я не знаю о бусте.

Причина, по которой обертка заголовков #pragma недостаточна, заключается в том, что некоторые предупреждения генерируются при создании экземпляров шаблонов или расширении макросов (или, возможно, даже при встраивании).

1 голос
/ 23 мая 2011

Сторонний код изменяется реже, поэтому было бы неплохо включить все эти включения в ваш StdAfx.h, и тогда вышеприведенное решение подавит их предупреждения.

Либо это, либо создайте какой-нибудь другой заголовок-оберткуфайлы, которые используют вышеупомянутую прагму вокруг фактических, включают в библиотеки, которые вы используете.

Я не могу придумать третий путь.Я говорю, запихните их всех в stdafx ( и , где они на самом деле тоже включены. Помните, что stdafx - это оптимизация, а не замена для осторожного выбора, в том числе в ваших исходных файлах)

0 голосов
/ 23 мая 2011

Проверьте все включения, которые загружают ваши файлы. Возможно, один из них сбрасывает предупреждения в состояние по умолчанию. Я видел это с заголовками MFC или ATL, которые поставляются с VC ++ - некоторые предупреждения отключаются, а затем снова включаются с помощью спецификатора вызова «по умолчанию» вместо использования пары push / pop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...