Следующий код НЕ подавляет ЛЮБЫЕ предупреждения компилятора C4503, но он подавляет предупреждения C4244.
#pragma warning(push)
#pragma warning(disable:4503)
#pragma warning(disable:4244)
#include <map>
#include <string>
int main(int argc, char *argv[])
{
class Field;
typedef std::map<std::string, Field * > Screen;
typedef std::map<std::string, Screen> WebApp;
typedef std::map<std::string, WebApp> WebAppTest;
typedef std::map<std::string, WebAppTest> Hello;
Hello MyWAT; // The C4503 error is NOT suppressed
int a;
a = 5.0f; // The C4244 error is suppressed
}
#pragma warning(pop)
Пожалуйста, окончательно объясните, почему предупреждения C4503 не подавляются.Примечание: это может быть связано с той же причиной, на которую ссылается Как обойти предупреждение C4505 в сторонних библиотеках? .
См. this и это для получения дополнительной информации.
Я использую Visual Studio 2008 на компьютере с Windows 7.