обработка указателя на функцию в Doxygen в C - PullRequest
2 голосов
/ 20 декабря 2011

В моем коде vtable содержит несколько указателей на функции.Doxygen не может следовать за ними.

Я хотел бы заставить его распознавать возможные пути, чтобы создать полный Call Call, так как теперь эта часть отсутствует.

пример:

typedef Bool(*SPECIAL_FUNC)(KEY key);

typedef struct{
  int a;
  int b;
  SPECIAL_FUNC;
}OBJ;

Bool add(KEY key); //code...
Bool sub(KEY key); //code...

Ответы [ 2 ]

4 голосов
/ 21 декабря 2011

Хотя это, скорее всего, не повлияет на график вызовов в doxygen, вы можете задокументировать функции, относящиеся к структуре, и предоставить ссылки на них в документации для SPECIAL_FUNC.Что-то вроде:

typedef Bool(*SPECIAL_FUNC)(KEY key);

/**
 * struct description
 */
typedef struct{
  int a;
  int b;

  /**
   * Function pointer to one of the following:
   * - add()
   * - sub()
   */
  SPECIAL_FUNC;
}OBJ;

/**
 * @relates OBJ
 * add function.
 */
Bool add(KEY key); //code...

/**
 * @relates OBJ
 * sub function.
 */
Bool sub(KEY key); //code...

При этом OBJ будет задокументировано как класс, add и sub появятся как связанные члены OBJ, а документация для SPECIAL_FUNC будетсодержать ссылки на add и sub.

2 голосов
/ 21 декабря 2011

Я не думаю, что вы можете сделать это, но одним из способов подделки этого может быть специальное определение только для этого и установка его только для Doxygen (с PREDEFINED).

Например

#ifdef MY_DOXYGEN_FAKE
  KEY key;
  add(key);
  sub(key);
#endif

В функциях, где вы используете указатель этой функции.Конечно, это больше работы, так как вы должны убедиться, что добавляете вызовы только тех функций, которые вы действительно используете из этой функции.Но опять же, вы должны знать, как в любом случае используется этот указатель на функцию.

...