当我浏览源代码时,我得到了一个函数指针。所以我使用ctags -R
但我没有得到定义。它就像
int (*example)(struct arg1, struct arg2);
如何获得原始功能(定义)?
答案 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查找多个文件中的模式检查链接