تحذير C4341 - 'XX':القيمة الموقعة خارج نطاق ثابت التعداد
-
09-06-2019 - |
سؤال
عند تجميع تطبيق C++ .Net الخاص بي، أحصل على 104 تحذيرًا من النوع:
Warning C4341 - 'XX': signed value is out of range for enum constant
حيث يمكن أن يكون XX
- WCHAR
- طويل
- قليل
- الثنائية
- GUID
- ...
لا يبدو أنني أستطيع إزالة هذه التحذيرات مهما فعلت.عندما أنقر عليها نقرًا مزدوجًا، يأخذني ذلك إلى جزء من الكود الخاص بي الذي يستخدم OdbcParameters - أي عندما أحاول مشروع اختبار مع كل ما تبقى من الأشياء ولكن لا يوجد OdbcParameters ولا يعطي التحذيرات.
هل لديك أي فكرة عن كيفية التخلص من هذه التحذيرات؟إنهم يصدرون تحذيرات حقيقية من التعليمات البرمجية التي كتبتها بالفعل والتي يصعب رؤيتها - وهذا يمنحني شعورًا فظيعًا بمعرفة أن تطبيقي يحتوي على 104 تحذيرات!
المحلول
هذا ال خطأ المترجم.هنا وظيفة أخرى مما يؤكد أنها مشكلة معروفة.لقد واجهت نفس المشكلة في أحد مشاريعي ولا توجد طريقة لمنع تشغيلها إلا إذا كان لديك طريقة ما لتجنب استخدام OdbcParameter.الطريقة الأكثر تحفظًا لقمع التحذيرات التي تجرها الدواب فقط هي الاستخدام
#pragma warning( push )
#pragma warning( disable: 4341 )
// code affected by bug
#pragma warning( pop )
نصائح أخرى
في Visual Studio، يمكنك دائمًا تعطيل تحذيرات معينة بالانتقال إلى:
إعدادات المشروع -> C/C++ -> خيارات متقدمة -> تعطيل التحذيرات المحددة:4341
إما أن تنتظر إصلاح المترجم أو لا تفعل ذلك #include
الكود الذي يطلقها.
[طريقة مطولة للقول أنك ربما لا تستطيع ذلك.]