سؤال

لدي حاليًا زوجين من ملفات #في C تقوم بإيقاف بعض الوظائف إلى الأجهزة للاختبار. ومع ذلك ، أريد توثيقهم مع Doxygen عندما تكون غير محددة أيضًا.

فمثلا:

هذا يعمل بشكل جيد:

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE

عندما تقوم بتغيير #Define إلى #UNDEF ، تحصل على تحذير في Doxygen ، ولا تظهر في الإخراج الذي تم إنشاؤه بواسطة Doxygen. أريد توثيق هذا #Define Wether الذي تم تعريفه أو غير محدد.

كيف يمكنني إجبار Doxygen على توثيق #UNDEF ؟؟؟

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

المحلول

حددها في ملف رأس يتم تضمينه فقط بواسطة Doxygen (وضعت في شجرة دليل منفصلة من المصدر الرئيسي).

حراسة ملف الرأس هذا من خلال لفه مع تحديد تحدده فقط في إعداد doxygen ، على سبيل المثال:

#ifdef ONLY_FOR_DOXYGEN

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE

#endif

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

نصائح أخرى

لقد وجدت طريقة Kludgy عن طريق إضافة #undef تحت #define. وبهذه الطريقة ، يتم تعريفها لـ Doxygen ، ولكنها غير محددة على الفور للمترجم.

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
/// Comment out #undef to simulate HW interface
#define SIMULATE_SOME_HW_INTERFACE
#undef  SIMULATE_SOME_HW_INTERFACE

كنت أحاول معرفة كيفية تعيين Simulate_HW_Interface في ملف doxyConfig باستخدام خيار محدد مسبقًا. لم أستطع الحصول عليها للعمل. إذن هذا هو أفضل حل لي حتى الآن.

لقد حلت مشكلتي في توثيق البراميلات مثل هذا في headerfile الرئيسية:

/**
 * \defgroup flags Compilerflags
 */

/**
 * \def MY_FLAG
 * \ingroup flags
 * Dokumentation....
 */
#ifndef MY_FLAG
#define MY_FLAG
#undef MY_FLAG
#else
#define MY_FLAG
#endif

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

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