هل هناك طريقة عامة جيدة لتصحيح أخطاء وحدات الماكرو C++؟

StackOverflow https://stackoverflow.com/questions/106412

  •  01-07-2019
  •  | 
  •  

سؤال

بشكل عام، لدي أحيانًا سلسلة من وحدات الماكرو المتداخلة مع عدد قليل من العناصر الشرطية للمعالج المسبق في تعريفاتها.قد يكون تصحيح الأخطاء مؤلمًا نظرًا لأنه من الصعب رؤية الكود الفعلي الذي يتم تنفيذه بشكل مباشر.

منذ فترة، أتذكر بشكل غامض العثور على علامة مترجم (دول مجلس التعاون الخليجي) لتوسيعها، ولكن واجهت صعوبة في جعل هذا يعمل عمليًا.

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

المحلول

سوف يقوم gcc -E بإخراج المصدر الذي تمت معالجته مسبقًا إلى stdout.

نصائح أخرى

بالنسبة لمستخدمي MSVC، يمكنك النقر بزر الماوس الأيمن على الملف/المشروع وعرض الإعدادات وتغيير خصائص الملف لإخراج المصدر المعالج مسبقًا (والذي يوجد عادةً في دليل obj).

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

هل يمكنك استبدالها بوظائف مضمّنة أو التخلص منها جميعًا معًا؟

ربما ينبغي عليك البدء في الابتعاد عن وحدات الماكرو والبدء في استخدام النماذج المضمنة والقوالب.

تعد وحدات الماكرو أداة قديمة، وهي الأداة الصحيحة في بعض الأحيان.كملاذ أخير، تذكر أن printf هو صديقك (وفي الواقع فإن printf ليس صديقًا سيئًا عند قيامك بأشياء متعددة الخيوط)

قم بتصحيح أخطاء التفكيك باستخدام الرموز المحملة.

ستقوم GCC -Save -Temps بكتابة ملف .i (أو .ii لـ C ++) وهو إخراج المعالج المسبق C ، قبل تسليمه إلى المترجم.يمكن أن يكون هذا مفيدًا في كثير من الأحيان.

يستخدم المترجمون الخليجيون والمتوافقون الخيار -E لإخراج المصدر المعالج مسبقًا إلى الوضع القياسي.

gcc -E foo.cpp

يدعم Sun Studio أيضًا هذه العلامة:

CC -E foo.cpp

ولكن الأفضل هو -xdumpmacros.يمكنك العثور على مزيد من المعلومات في مستندات صنز.

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