سؤال

أثناء تطوير تطبيق C++, اضطررت إلى استخدام مكتبة 3rd الطرف التي تنتج كمية كبيرة من التحذيرات ذات الصلة مع غير مؤذية #pragma التوجيه المستخدمة.

../File.hpp:1: warning: ignoring #pragma ident
In file included from ../File2.hpp:47,
                 from ../File3.hpp:57,
                 from File4.h:49,

هل من الممكن أن تعطيل هذا النوع من تحذيرات عند استخدام GNU C++ compiler?

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

المحلول

أعتقد أنك يمكن أن تجمع مع

-Wno-unknown-pragmas

إلى قمع هذه.

نصائح أخرى

في دول مجلس التعاون الخليجي ، ترجمة مع Wno-غير معروف-pragmas

في MS Visual Studio 2005 (هذا السؤال ليس ذات الكلمات الدلالية مع دول مجلس التعاون الخليجي ، لذلك أنا مضيفا ان هذا للمرجعية), يمكنك تعطيل عالميا في المشروع إعدادات->C/C++->خيارات متقدمة.أدخل 4068 في "تعطيل تحذيرات محددة"

أو يمكنك إضافته إلى أي ملف إلى تعطيل تحذيرات محليا

#pragma warning (disable : 4068 ) /* disable unknown pragma warnings */

ربما ترى دول مجلس التعاون الخليجي التشخيص Pragmas?بدلا من ذلك في هذه الحالة يمكن استخدام مزيج من الخيارات أن -Wall تمكن باستثناء -Wunknown-pragmas.

شكرا لك لهذه المعلومة.في حالتي أنا أعمل مع Qt مينغو.أحتاج أن العلم وسيلة أخرى في بلدي .الملف PRO:

QMAKE_CXXFLAGS_WARN_ON += -Wno-unknown-pragmas

أعلم أن السؤال هو عن دول مجلس التعاون الخليجي ، ولكن للناس الذين يريدون القيام بذلك كما portably ممكن:

معظم المجمعين التي يمكن أن تنبعث من هذا التحذير يكون وسيلة إلى تعطيل التحذير من أي سطر الأوامر (استثناء:PGI) أو رمز (استثناء:DMC):

  • مجلس التعاون الخليجي: -Wno-unknown-pragmas / #pragma GCC diagnostic ignored "-Wunknown-pragmas"
  • رنة: -Wno-unknown-pragmas / #pragma clang diagnostic ignored "-Wunknown-pragmas"
  • Intel C/C++ Compiler: -diag-disable 161 / #pragma warning(disable:161)
  • PGI: #pragma diag_suppress 1675
  • MSVC: -wd4068 / #pragma warning(disable:4068)
  • TI: --diag_suppress,-pds=163 / #pragma diag_suppress 163
  • IAR C/C++ Compiler: --diag_suppress Pe161 / #pragma diag_suppress=Pe161
  • الرقمية المريخ C/C++ Compiler: -w17

يمكنك الجمع بين أكثر من هذا في ماكرو واحد في التعليمات البرمجية ، وهو ما فعلته من أجل HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS ماكرو في هيدلي:

#if HEDLEY_HAS_WARNING("-Wunknown-pragmas")
#  define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"")
#elif HEDLEY_INTEL_VERSION_CHECK(16,0,0)
#  define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)")
#elif HEDLEY_PGI_VERSION_CHECK(17,10,0)
#  define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675")
#elif HEDLEY_GNUC_VERSION_CHECK(4,3,0)
#  define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"")
#elif HEDLEY_MSVC_VERSION_CHECK(15,0,0)
#  define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068))
#elif HEDLEY_TI_VERSION_CHECK(8,0,0)
#  define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163")
#elif HEDLEY_IAR_VERSION_CHECK(8,0,0)
#  define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161")
#else
#  define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
#endif

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

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

العديد من المجمعين يمكن أيضا دفع/البوب تحذيرات على كومة, حتى تتمكن من دفع ، ثم تعطيلها من قبل بما في ذلك رمز لا تتحكم بها ، ثم البوب حتى الخاص بك رمز سوف لا تزال تثير التحذير في السؤال (حتى يمكنك تنظيفه).هناك وحدات الماكرو في هيدلي أيضا: HEDLEY_DIAGNOSTIC_PUSH / HEDLEY_DIAGNOSTIC_POP.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top