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
将被记录为类, add
和sub
将显示为OBJ
相关成员, OBJ
的文档将包含add
和sub
链接。
我不认为你能做到这一点,但是伪造这个的一种方法可能是为此特别定义并且只为Doxygen设置它(使用PREDEFINED)。
例如
#ifdef MY_DOXYGEN_FAKE KEY key; add(key); sub(key); #endif
在使用该函数指针的函数中。 当然,这是更多的工作,因为你必须确保只添加对你真正使用该函数的函数的调用。 但是你应该知道在任何情况下如何使用该函数指针。