C中Doxygen中的函数指针处理

在我的代码中,vtable包含几个函数指针。 Doxygen无法跟随它们。

我想强制它识别可能的路径,以生成一个完整的调用图,因为现在缺少这部分。

例:

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... 

虽然这可能不会影响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将被记录为类, addsub将显示为OBJ相关成员, OBJ的文档将包含addsub链接。

我不认为你能做到这一点,但是伪造这个的一种方法可能是为此特别定义并且只为Doxygen设置它(使用PREDEFINED)。

例如

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

在使用该函数指针的函数中。 当然,这是更多的工作,因为你必须确保只添加对你真正使用该函数的函数的调用。 但是你应该知道在任何情况下如何使用该函数指针。