gpt4 book ai didi

cscope 的错误? cscope 找不到带有函数指针参数的函数的定义

转载 作者:行者123 更新时间:2023-12-02 21:10:50 24 4
gpt4 key购买 nike

//main.c  
#include "stdio.h"
void f(){
printf("Welcome to emacs's world!");
return;
}
void call_f(void (*f)()){
(*f)();
return;
}
void main(){
call_f(f);
return;
}

我使用cscope查找函数“call_f”的定义,但没有结果,cscope找不到“call_f”的定义。
我将函数“call_f”的参数类型更改为除函数指针之外的另一种类型。

#include "stdio.h"
void f(){
printf("Welcome to emacs's world!");
return;
}
void call_f(/* void (*f)() */void){
// (*f)();
f();
return;
}
void main(){
// call_f(f);
call_f(void);
return;
}

然后cscope可以找到函数“call_f”的定义。这是一个错误吗?

最佳答案

是的,这是一个错误。 Cscope 没有实现完整的 C 语言解析器。相反,它只是使用有很多怪癖的扫描仪。

例如,如果opening argument bracket is on the next line,cscope也无法识别函数调用/声明。像这样:

fn_foo
(arg1, arg2);

您发现的bug甚至是documented in cscope's man page :

Nor does it recognize function definitions with a function pointer argument

    ParseTable::Recognize(int startState, char *pattern,
int finishState, void (*FinalAction)(char *))
{
...
}

关于cscope 的错误? cscope 找不到带有函数指针参数的函数的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com