2008-08-20 8 views
6

Podczas kompilowania mojej aplikacji C++ .NET mam 104 ostrzeżeń typu:Ostrzeżenie C4341 - 'XX': podpisane wartość jest poza zakresem dla wyliczenia stałej

Warning C4341 - 'XX': signed value is out of range for enum constant 

Gdzie XX być

  • WCHAR
  • LONG
  • BIT
  • BINARY
  • GUID
  • ...

I nie wydaje się usunąć te ostrzeżenia cokolwiek robię. Kiedy dwukrotnie je klikam, przenosi mnie to do części mojego kodu, która używa OdbcParameters - kiedy próbuję projektu testowego z całą resztą moich rzeczy, ale bez OdbcParameters, nie daje to ostrzeżeń.

Każdy pomysł, jak mogę się pozbyć tych ostrzeżeń? Robią prawdziwe ostrzeżenia z kodu, który napisałem ciężko, aby zobaczyć - i to tylko daje mi okropne uczucie, wiedząc, że moja aplikacja ma 104 ostrzeżenia!

Odpowiedz

4

To compiler bug . Oto another post, potwierdzajĘ ... cy, że jest to znany problem. Mam taki sam problem w jednym z moich projektów i nie ma sposobu, aby zapobiec jego uruchomieniu, chyba że masz jakiś sposób uniknięcia użycia OdbcParameter. Najbardziej konserwatywny sposób, aby stłumić tylko ostrzeżenia buggy jest użycie

#pragma warning(push) 
#pragma warning(disable: 4341) 

// code affected by bug 

#pragma warning(pop) 
3

W programie Visual Studio można zawsze wyłączyć konkretne ostrzeżenia, przechodząc do:

ustawienia projektu -> C/C++ -> Zaawansowane -> wyłączyć określone ostrzeżenia: 4341

0

Albo czekać na poprawki kompilatora lub nie kod #include która wyzwala go.

[Dokładny sposób na powiedzenie, że prawdopodobnie nie możesz.]

Powiązane problemy