فك رموز رسائل خطأ قالب C++
-
09-06-2019 - |
سؤال
لقد بدأت حقًا في فهم ما يقصده الناس عندما يقولون إن رسائل خطأ C++ فظيعة جدًا فيما يتعلق بالقوالب.لقد رأيت أخطاء طويلة جدًا لأشياء بسيطة مثل عدم مطابقة الوظيفة لنموذجها الأولي.
هل هناك أي حيل لفك رموز هذه الأخطاء؟
يحرر:أنا أستخدم كلاً من دول مجلس التعاون الخليجي وMSVC.يبدو أن كلاهما فظيع جدًا.
المحلول
يمكنك تجربة الأداة التالية لجعل الأمور أكثر عقلانية:
نصائح أخرى
أنا متأكد من أن الجحيم لا أستطيع ذلك.تنفجر الأخطاء الصغيرة في صفحات وصفحات غير قابلة للقراءة.عادة في الصباح الباكر، قبل تناول القهوة.:(
نصيحتي الوحيدة هي أن تأخذ نفسًا عميقًا، وتبدأ من الأعلى وتحاول تحليل الأجزاء المهمة من المعلومات.(أعلم أن القول أسهل من الفعل، أليس كذلك؟).
مثل @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>".كانت هناك بعض الأسطر التي تتبع الخطأ الفعلي في نافذة الإخراج والتي ساعدتني على فك رموز المشكلة الفعلية.