如何将函数指针映射到其定义?

时间:2014-04-03 05:39:36

标签: c ctags

当我浏览源代码时,我得到了一个函数指针。所以我使用ctags -R但我没有得到定义。它就像

int (*example)(struct arg1, struct arg2);

如何获得原始功能(定义)?

3 个答案:

答案 0 :(得分:3)

int (*example)(struct arg1, struct arg2);

上面的行声明了一个名为example的变量,其类型为int (*)(struct arg1, struct arg2)。您可以为其分配兼容的函数指针,例如:

int foo(struct arg1 a1, struct arg2 a2) {
    // irrelevant
}

int main(void) {
    int (*example)(struct arg1, struct arg2); // declare example as a function ptr
    struct arg1 a1;
    struct arg2 a2;
    example = &foo; // assign address of foo to it. BTW, `example = foo;` also works.
    example(a1, a2); // call foo
    return 0;
}

就像有另一个指针,例如:int *example;,但是有不同的类型。

答案 1 :(得分:1)

int (*example)(struct arg1, struct arg2);

这里声明了函数指针但没有赋值,即它没有指向任何函数。所以在代码中会有一个语句为它分配一个函数,以便你可以搜索,

"example="

在源代码中知道它指向的函数。

答案 2 :(得分:1)

函数指针也只是指向地址的指针。

  

int(* example)(struct arg1,struct arg2);

指针的声明没有定义。

用于定义您搜索指针指向的地方,如@learningC已回答 检查example的分配位置

假设您在编译之前找到它(因为您的信息不完整,为什么)

  

VI / Vim,只需输入" /"或"?",然后是您要搜索的字词。

编辑: - Find words查找多个文件中的模式检查链接