سؤال

عادةً ما أرغب في تمكين الكثير من التحذيرات عند البرمجة.ومع ذلك، تحتوي بعض المكتبات على تعليمات برمجية تسبب تحذيرات بسهولة (..، python، Qt، ..).عند التحويل البرمجي باستخدام gcc، يمكنني فقط استخدام -isystem بدلاً من -I لإسكات ذلك.كيف يمكنني أن أفعل الشيء نفسه مع مترجم MS؟أعرف التحذير #pragma، لكني أرغب في حل لا يتضمن تعليمات برمجية محددة للمترجم في كل مكان.أعلم أيضًا أنه يمكنني إيقاف تشغيل تحذيرات معينة، لكن هذا ليس ما أريده أيضًا.

بالمناسبة:يجب أن يكون نظام isystem علامة على هذا السؤال، لكن لم يُسمح لي بفعل ذلك..

ملخص:أريد أن أرى الجميع تحذيرات من الكود الخاص بي، و لا تحذيرات من التعليمات البرمجية الخارجية.

هل كانت مفيدة؟

المحلول

اعتبارًا من 17-08-2017، لا يزال هذا يبدو مستحيلًا.

أضفت طلب ميزة هنا:

https://developercommunity.visualstudio.com/content/problem/96411/impossible-to-ignore-warnings-from-system-librarie.html

تحديث 2018:

تم إغلاق المشكلة الآن كمشكلة ثابتة وهي متوفرة في تثبيت MS VS القياسي [مصدر].تتناول مشاركة مدونة من فريق MS الميزات الجديدة [هنا].

الحل الذي تقدمه MS مرن.لا يمكنك فقط التمييز باستخدام المسارات كما تفعل بها --isystem, ، ولكن على سبيل المثال أيضًا من خلال ما إذا كنت تستخدمه #include "" أو #include <>.يستحق منشور المدونة القراءة لرؤية جميع نقاط التخصيص المتنوعة.

أخيرًا أصبحت التحذيرات متاحة لي أيضًا على منصة MS VS.

نصائح أخرى

وهذا موجود الآن تحت /experimental:external /external:I system_include_path /external:W0. انظر https://blogs.msdn.microsoft. كوم / vcblog / 2017/12/13 / كسر تحذيرات نظرية / للحصول على المزيد من التفاصيل.

ولا فكرة لماذا MS أبدا اختار هذا الأمر. لا يسعنا إلا أن محاولة التصويت على <لأ href = "https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/14717934-add-a-cl-exe-option-for-system-headers تشبه دول مجلس التعاون الخليجي ليالي "يختلط =" نوفولو "> https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/14717934-add-a-cl-exe-option-for-system -headers مثل دول مجلس التعاون الخليجي ليالي

لا، MSVC ليس لديها ما يعادل -isystem.


ونظرة في الإخراج الإخراج من البنود /؟ :

<اقتباس فقرة>   

و/ WD تعطيل تحذير ن

     

و/ تعاملنا مع تحذير ن كخطأ

     

و/ التعليم الجامعي تحذير القضية ن مرة واحدة

     

و/ ث مجموعة مستوى التحذير 1-4 ل n

لاحظ أن هذا تعطيل تحذيرات للمشروع بأكمله؛ أتذكر عند استخدام كيو تي فما استقاموا لكم فاستقيموا تغيير بل هو رأس الرئيسي مع #pragma محذرا من تعطيل وتمكين في نهاية مرة أخرى لذلك أنا لا يزال يرى كل التحذيرات لمصدر بلدي.

تعديل كما المؤلف قام بتعديل السؤال، والإجابة تحديث: ليس هناك طريقة للحصول على التعليمات البرمجية الخاصة بك مع التحذيرات والتعليمات البرمجية كيو تي دون تحذيرات باستخدام الأعلام المترجم: كيف أنت ذاهب لنقول للمترجم ما هو ' الخاص بك مدونة؟

لاحظ أن الأعلام أعلاه يمكن تطبيقها على مستوى الملف أيضا، ولذلك فإن هذا من شأنه أن يسمح لك لتعطيل التحذيرات فقط تلك الملفات التي قمت بتضمين رؤوس كيو تي، ولكن هذا <م> لا تزال سيلة لا يمكنك نراهم التعليمات البرمجية الخاصة بك في هذا الملفات.

وهكذا أنا طيبة مع الإجابة أعلاه؛ أنها ليست جميلة جدا، ولكن أنا جميلة من انها السبيل الوحيد: استخدام #pragma في بداية ونهاية رأس كيو تي (ق). إما تغيير رؤوس كيو تي (أكثر قبيحة)، أو اختيار وسيلة أقل الغازية مثل هذا:

//your source/header file
#include "shutuppqt.h"
#include <QString>
#include "enableallwarnings.h"

والمثال "shutuppqt.h"

#ifdef MSVC
  #pragma warning ( disable : 4222 ) //or whatever warning Qt emits
#else
  //....
#endif

والمثال "enableallwarnings.h"

#ifdef MSVC
  #pragma warning ( enable : 4222 ) //or default instead of enable
#else
  //....
#endif
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top