سؤال

وأنا اتلقى حاليا تحذيرات مترجم التي تشبه التحذير أعطى في عنوان المسألة. تحذيرات مثل ....

وwarning: 'boost::system::generic_category' defined but not used

وwarning: 'boost::system::posix_category' defined but not used

وwarning: 'boost::system::errno_ecat' defined but not used

وwarning: 'boost::system::native_ecat' defined but not used

وبقدر ما أعرف لا يتأثر البرنامج بأي شكل من الأشكال. ومع ذلك، أنا لا أحب التحذيرات التسكع، ولكن ليس لدي أي فكرة عما تحاول هذه التحذيرات ليقول لي إلى جانب أن شيئا محددة وذات الصلة لتعزيز والتسكع في مكان ما غير المستخدمة. ومع ذلك، كل ما كنت تعرف، لقد استعملت. المكتبات دفعة أنا باستخدام هي مكتبة عشوائية ومكتبة الملفات.

عند أتحقق من مصدر التحذير فإنه إحضار ملف error_category.hpp دفعة ويسلط الضوء على بعض static consts التي علق إما "فئات محددة مسبقا خطأ" أو "المرادفات إهمال". ربما المشكلة لديها ما تفعله مع معالجة الأخطاء بلدي (أو عدم وجود) عند استخدام المكتبة؟

ويمكن لأي شخص أن يعطي بعض التبصر حول لماذا هذه التحذيرات التي ظهرت؟ أنا تماما في عداد المفقودين شيء؟

وP.S. التحذيرات على مستوى كحد أقصى.

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

المحلول

وهذا يتعلق مكتبة ERROR_CODE في المكتبة Boost.System. error_codes دفعة يحتوي على سمات اثنين: القيم والفئات. من أجل جعل error_codes الموسعة بحيث يمكن للمستخدمين مكتبة تصميم فئات الخطأ الخاصة، والمصممين دفعة في حاجة الى بعض طريقة لتمثيل فئة رمز الخطأ فريدة من نوعها. ومن شأن رقم بسيط لا يكفي، لأن هذا يمكن أن يؤدي إلى مشروعين تستخدم فيها أرقام ID المتضاربة للفئات خطأ مخصصة.

وذلك أساسا، ما فعلوه هو استخدام عناوين الذاكرة، في شكل من أشكال الأجسام الساكنة التي ترث من error_category الفئة الأساسية. هذه المتغيرات في الواقع لا تفعل أي شيء ما عدا لخدمة معرفات فريدة من نوعها من فئة خطأ معينة. لأنهم كائنات وهمية ثابتة في جوهرها مع عناوين فريدة من نوعها في الذاكرة، يمكنك بسهولة خلق الخاصة فئات الخطأ المخصصة الخاصة بك والتي سوف لا تتداخل مع غيرها من فئة خطأ "معرفات". انظر هنا لمزيد من المعلومات .

وأعتقد أن ما ترونه هو أحد الآثار الجانبية لهذا القرار التصميم. منذ أبدا تستخدم هذه المتغيرات في الواقع في البرنامج، والمترجم هو توليد التحذيرات. ويكفي أن أقول، وأنا لا أعتقد أنك تفعل شيئا خاطئا.

نصائح أخرى

وأنا أتفق معCharles سالفيا، ولكن أريد أن أضيف أن ما لا يقل عن دفعة 1.44.0، يتم تغليف هذه التعريفات الآن - أن تكون مستبعدة كما انتقدت. حتى إذا كنت لا تستخدم لهم، وتشمل فقط الأسطر التالية قبل تضمين ملف الرأس:

#ifndef BOOST_SYSTEM_NO_DEPRECATED
#define BOOST_SYSTEM_NO_DEPRECATED 1
#endif

وحاولت BOOST_SYSTEM_NO_DEPRECATED اقترحه @ M.Tibbits، وبدا لإزالة بعض الحالات من التحذيرات (في نظام كبير بنيت تحت لينكس)، ولكن ليس كل شيء.

ومع ذلك، باستخدام -isystem بدلا من -I لتشمل رؤوس دفعة (وتجاهل مشاكلهم) فعل العمل بالنسبة لي.

والمقترحة من قبل <وأ href = "https://exceptionshub.com/how-do-you-disable-the-unused-variable-warnings-coming-out-of-gcc.html" يختلط = "نوفولو noreferrer" > https://exceptionshub.com/how-do-you-disable-the-unused-variable-warnings-coming-out-of-gcc.html

وأوضح (بشكل غير مباشر) من خلال GNU دول مجلس التعاون الخليجي: HTTP: //gcc.gnu كافيه / onlinedocs / دول مجلس التعاون الخليجي / دليل-Options.html

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