Poniższy kod NIE blokuje żadnych ostrzeżeń kompilatora C4503, ale eliminuje ostrzeżenia C4244.Czy można wyłączyć ostrzeżenie kompilatora C4503?
#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)
Proszę definitywnie wyjaśnić, dlaczego ostrzeżenia C4503 nie są pomijane. Uwaga: może to wynikać z podobnego powodu, o którym mowa w How can I work around warning C4505 in third party libraries?.
Aby uzyskać więcej informacji, należy zapoznać się z numerami this i this.
Używam Visual Studio 2008 na komputerze z systemem Windows 7.
Bez dodatkowego kontekstu, w którym wyłączasz ostrzeżenie, trudno jest znaleźć rozwiązanie. Zgaduję: Wyłączyłeś ostrzeżenie wokół kodu, który tworzy szablon potwora, ale musisz wyłączyć przed nagłówkiem, w którym zdefiniowany jest szablon. – Xeo
@Xeo Mam podwójnie sprawdzone i potwierdziłem, że to nie jest problem. –
Powinieneś pomyśleć o usunięciu tych ostrzeżeń, ponieważ mogą one później prowadzić do problemów, np. podczas łączenia. – PlasmaHH