2008-08-20 32 views
6

Khi biên dịch ứng dụng C++ Net của tôi tôi nhận được 104 lời cảnh báo của các loại:Cảnh báo C4341 - 'XX': ký giá trị ra khỏi phạm vi cho enum liên tục

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

đâu XX có thể

  • WCHAR
  • DÀI
  • BIT
  • Binary
  • GUID
  • ...

Tôi không thể xóa những cảnh báo này bất cứ điều gì tôi làm. Khi tôi kích đúp vào chúng nó sẽ đưa tôi đến một phần mã của tôi sử dụng OdbcParameters - bất kỳ khi nào tôi thử một dự án thử nghiệm với tất cả phần còn lại của công cụ của tôi nhưng không có OdbcParameters nó không đưa ra cảnh báo.

Bất kỳ ý tưởng nào về cách tôi có thể loại bỏ các cảnh báo này? Họ đang thực hiện cảnh báo thực sự từ mã tôi đã thực sự viết khó nhìn thấy - và nó chỉ mang lại cho tôi một cảm giác khủng khiếp khi biết ứng dụng của tôi có 104 cảnh báo!

Trả lời

4

Đây là một compiler bug . Dưới đây là another post xác nhận đó là sự cố đã biết. Tôi đã có cùng một vấn đề trong một trong các dự án của tôi và không có cách nào để ngăn chặn nó được kích hoạt trừ khi bạn có một số cách để tránh việc sử dụng OdbcParameter. Cách bảo thủ nhất để ngăn chặn chỉ những lời cảnh báo lỗi là sử dụng

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

// code affected by bug 

#pragma warning(pop) 
3

Trong Visual Studio bạn luôn có thể vô hiệu hóa các cảnh báo cụ thể bằng cách vào:

thiết lập dự án

-> C/C++ -> Advanced -> Vô hiệu hóa cảnh báo cụ thể: 4341

0

Hoặc chờ cho một sửa chữa biên dịch hay không #include mã mà gây nên nó.

[Một cách tiết lộ nói bạn có thể không thể.]

Các vấn đề liên quan