Doxygen не разрешает макрос правильно - PullRequest
0 голосов
/ 31 января 2019

Я использую Doxygen 1.8.11 вместе с плагином eclipse eclox.я попытался сгенерировать граф вызовов для моих исходных файлов.когда я зарегистрировался в одном из файлов, я заметил, что граф вызовов содержал вызов функции, который фактически отключен #define, я ожидал, что не вызову этого вызова функции в графе вызовов.

сверхуисходного файла:

#define MACRO_NAME   FALSE

....

void Func_1(int *p)
{
   ....
#if (MACRO_NAME == TRUE)
        Func_Call_2()
#else
        Func_Call_3()
#endif 
}

FALSE и TRUE определены в одном из заголовков, которые я включил в настройки в «Включить пути», и я также получаю гиперссылку в html-отчете для FALSE и TRUE, так что doxygenможет найти определение.

и Func_Call_2, и Func_Call_3 () отрисовываются в графе вызовов, когда на самом деле я хочу видеть только Func_Call_3 ().

мои настройки в файле doxy:

Enable Preprocessing      YES
Macro Expansion           NO
Expand Only Predefined    NO
Search Includes           YES
Extract All               YES
Extract Static            YES

я также пытался с Macro Expansion ДА, но потом я вообще не получил колл-колл для этой функции Func_1 только после того, как вернул значение НЕТ, граф вызовов снова рисуется в html-файле

заголовочный файл, в котором определены FALSE/TRUE, начинается следующим образом:

#ifndef HEADER_H
#define HEADER_H

.....

#ifndef TRUE
   #define TRUE   1
#endif

#ifndef FALSE
   #define FALSE  0
#endif

есть ли другие настройки, которые я могу попробовать?чтобы doxygen нарисовал граф вызовов без отключенного кода?

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете попробовать одно из следующих предложений:

  • Не используйте TRUE и FALSE, но 1 и 0 непосредственно в определении MACRO_NAME и вусловие.
  • Не устанавливайте значение для MACRO_NAME, но проверяйте, определено оно или нет.
  • Установите для параметра Расширение макроса значение YES, а для параметра Развернуть только предопределенное значение YES.Затем установите Predefined и / или Expand As Defined , чтобы включить соответствующие макросы.
...