سؤال

لقد بدأت مشروع جديد و قد قررت أن تأكد من أنه يبني نظيفة مع /الجدار تمكين الخيار.المشكلة الوحيدة هي ليست كل 3rd الطرف المكتبات (مثل زيادة) ترجمة دون تحذيرات ، حتى لقد لجأت إلى القيام بذلك في مشترك الرأس:

#pragma warning(push)

#pragma warning(disable:4820)
#pragma warning(disable:4619)
#pragma warning(disable:4668)
#pragma warning(disable:4625)
#pragma warning(disable:4626)
#pragma warning(disable:4571)
#pragma warning(disable:4347)
#pragma warning(disable:4640)
#pragma warning(disable:4365)
#pragma warning(disable:4710)
#pragma warning(disable:4820)
#pragma warning(disable:4350)
#pragma warning(disable:4686)
#pragma warning(disable:4711)
#pragma warning(disable:4548)

#include <boost/array.hpp>
#include <boost/assert.hpp>
#include <boost/assign.hpp>
#include <boost/bind.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/filesystem.hpp>
#include <boost/foreach.hpp>
#include <boost/format.hpp>
#include <boost/function.hpp>
#include <boost/integer.hpp>
#include <boost/optional.hpp>
#include <boost/regex.hpp>
#include <boost/smart_ptr.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/utility.hpp>
#include <boost/variant.hpp>

#pragma warning(pop)

هذا يعمل بشكل جيد بما فيه الكفاية ، ولكن في كل مرة إضافة جديدة وزيادة رؤوس لدي لإضافة ما والتحذيرات التي تولد إلى القائمة.هل هناك طريقة تعطيل جميع تحذيرات من امتداد هذا الرمز ؟

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

المحلول

يمكنك دفع/البوب انخفاض مستوى التحذير من هذا القبيل:

#pragma warning(push, 0)        

#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
// ...

#pragma warning(pop)

ولكن أعلم أنه ليس من الممكن تعطيل كل تحذيرات.على سبيل المثال ، بعض linker تحذيرات من المستحيل إيقاف.

نصائح أخرى

#pragma warning(disable:4820)
#pragma warning(disable:4619)
#pragma warning(disable:4668)

ولخطوط أقل ....

#pragma warning (disable : 4820 4619 4668)

وماذا فعلت قبل أن يتم تعيين الخيار "W3" بدلا من "ستريت" ثم في كل من بلدي الملفات المصدر .CPP أضع

#pragma warning(push, 4)

وعلى رأس بعد كل "# تشمل ..." خطوط ثم

#pragma warning(pop)

وكما السطر الأخير من الملف.

وبهذه الطريقة يمكنك الحصول على مستوى 4 تحذيرات في التعليمات البرمجية ومستوى 3 في التعليمات البرمجية 3rd الطرف أنك لا تستطيع أن تفعل أي شيء عنه.

وباستخدام تقنية الموضحة في الجواب عساف لافي في في هذا الشأن هو ممكن لإنشاء وحدات الماكرو المساعد:

#define DISABLE_ALL_WARNINGS_BEGIN \
    __pragma(warning(push, 0))

#define DISABLE_ALL_WARNINGS_END \
    __pragma(warning(pop))

ويمكن استخدامها على النحو التالي (<لأ href = "https://godbolt.org/#g:!((g:!((g:!((g:!((h:codeEditor، الأول: (ي: 1، لانج: ج٪ 2B٪ 2B، المصدر: '٪ 23define + DISABLE_ALL_WARNINGS_BEGIN +٪ 5C٪ 0A ++++ __ PRAGMA (تحذير (دفعة، + 0))٪ 0A٪ 0A٪ 23define + DISABLE_ALL_WARNINGS_END +٪ 5C ٪ 0A ++++ __ PRAGMA (تحذير (البوب))٪ 0A٪ 0A٪ 0ADISABLE_ALL_WARNINGS_BEGIN٪ 0Avoid + فو (كثافة + أ)٪ 0A٪ 7B٪ 0A ++++ // + هذا + وظيفة + يجب + توليد + في + يلي تحذير + ٪ 0A ++++ // +٪ 22warning + C4100: + "و! ':! + غير مرجعية + رسمي + المعلمة٪ 22٪ 0A ++++ // + ما + هو + هي + لا + ملفوفة + داخل +٪ 22DISABLE_ALL_WARNINGS٪ 22 + قسم٪ 0A٪ 7D٪ 0ADISABLE_ALL_WARNINGS_END٪ 0A٪ 0Aint + الرئيسية () +٪ 7B٪ 0A ++++ العودة + 0٪ 3B٪ 0A٪ 7D ')، ل:' 5 '، ن:' 0 '، س: "C٪ 2B ٪ 2B + مصدر +٪ 231، ر: '0'))، ك: 50، ل: "4"، ن: '0'، س: ''، ق: 0، ر: '0')، (ز : ((ح: مترجم، ط: (المترجم: vcpp_v19_20_x64، والمرشحات: (ب: '0'، ثنائي: '1'، commentOnly: '0'، demangle: '0'، توجيهات: '0'، تنفيذ: "1"، وإنتل: '0'، libraryCode: '1'، تقليم: '1')، لانج: ج٪ 2B٪ 2B، يبس: ()، خيارات: / W4، المصدر: 1)، ل: " 5 '، ن:' 0 '، س: "إلى x64 + MSVC + v19.20 + (محرر +٪ 231، + مترجم +٪ 231) + C٪ 2B٪ 2B، ر:' 0 '))، ك: 50، ل: "4"، ن: '0'، س: ''، ق: 0، ر: '0'))، ل: '2'، م: 50، ن: '0'، س: ''، ر: '0')، (ز: ( (ح: خرج، ط: (المترجم: 1، محرر: 1، والتفاف: '1')، ل: '5'، ن: '0'، س: '٪ 231 + مع + إلى x64 + MSVC + v19.20 '، ر:' 0 '))، رأس :()، ل: "4"، م: 50، ن:' 0 '، س:' '، ق: 0، ر:' 0 '))، ل: '3'، ن: '0'، س: ''، ر: '0'))، النسخة: 4 "يختلط =" نوفولو noreferrer "> على الانترنت تجريبي ):

DISABLE_ALL_WARNINGS_BEGIN
void foo(int a)
{
    // this function should generate the following warning
    // "warning C4100: 'a': unreferenced formal parameter"
    // unless it is not wrapped inside "DISABLE_ALL_WARNINGS" section
}
DISABLE_ALL_WARNINGS_END
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top