繁体   English   中英

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

[英]How to map a function pointer to its definition?

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

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

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

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; ,但类型不同。

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

此处声明了函数指针,但未分配值,即,它没有指向任何函数。 因此在代码中将有一条语句为其分配一个函数,以便您可以搜索,

"example="

在源代码中了解它所指向的功能。

功能指针也只是指向地址的指针。

int(* example)(结构arg1,结构arg2);

那是指针的声明而不是定义。

为了定义,您搜索指针指向的地方,如@learningC回答检查在example被分配的地方

假设您在编译之前就找到了它(因为您的信息不完整,所以您想要这样)

VI / Vim,只需键入“ /”或“?”,然后输入要搜索的单词。

编辑:- 查找单词以在多个文件中查找模式检查链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM