سؤال

لقد بدأت حقًا في فهم ما يقصده الناس عندما يقولون إن رسائل خطأ C++ فظيعة جدًا فيما يتعلق بالقوالب.لقد رأيت أخطاء طويلة جدًا لأشياء بسيطة مثل عدم مطابقة الوظيفة لنموذجها الأولي.

هل هناك أي حيل لفك رموز هذه الأخطاء؟

يحرر:أنا أستخدم كلاً من دول مجلس التعاون الخليجي وMSVC.يبدو أن كلاهما فظيع جدًا.

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

المحلول

يمكنك تجربة الأداة التالية لجعل الأمور أكثر عقلانية:

http://www.bdsoft.com/tools/stlfilt.html

نصائح أخرى

أنا متأكد من أن الجحيم لا أستطيع ذلك.تنفجر الأخطاء الصغيرة في صفحات وصفحات غير قابلة للقراءة.عادة في الصباح الباكر، قبل تناول القهوة.:(

نصيحتي الوحيدة هي أن تأخذ نفسًا عميقًا، وتبدأ من الأعلى وتحاول تحليل الأجزاء المهمة من المعلومات.(أعلم أن القول أسهل من الفعل، أليس كذلك؟).

مثل @nsanders قال STLfilt هو حل جيد.إن STLFilt الذي تم تطويره محليًا (عندما لا ترغب في تحمل مشكلة تثبيت Perl) هو نسخ رسالة الخطأ في المحرر والبدء في استبدال أجزاء من الخطأ حتى يصبح (أكثر) قابلاً للإدارة.

على سبيل المثال

s/std::basic_string<char,std::char_traits<char>,std::allocator<char>>/string/g 

وبعبارات أقل العبقري غريب الأطوار هذا يعني:

يستبدل:

std::basic_string<char,std::char_traits<char>,std::allocator<char>>

مع:

string

بعض المترجمين يقدمون رسائل أفضل من غيرهم.ما المترجم الذي تستخدمه؟وبعد أن قلت ذلك، فهي كلها سيئة للغاية.سيعمل C++0X على إصلاح معظم هذه المشكلة (انظر المفاهيم)، ولكن لن يتم إصدار المعيار حتى عام 2009، ومن المحتمل أن يكون الدعم واسع النطاق حتى بعد ذلك :-(

على الأقل في Visual Studio، هناك المزيد من المعلومات المقدمة في نافذة Output Build بدلاً من قائمة الأخطاء.لقد حدث خطأ في القالب في حالة قائمة الأخطاء، "لا يمكن تحويل Foo<int> إلى Foo<int>".كانت هناك بعض الأسطر التي تتبع الخطأ الفعلي في نافذة الإخراج والتي ساعدتني على فك رموز المشكلة الفعلية.

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