我正在用C语言编写一个简单的代码,这是可行的。
它在没有错误的情况下编译和执行,给出预期的输出。
#include <stdio.h>
int main(void) {
struct SiteTemplate {
int views;
};
int visit(struct SiteTemplate *site) {
site -> views++;
return 0;
}
struct SiteTemplate site;
site.views = 0;
visit(&site);
printf("%d\n", site.views);
return 0;
}但是在我的VS代码中,在打开C_Cpp linting的情况下,我的IDE显示了下面的错误和其他问题。
declaration is incompatible with previous "visit" (declared at line 8)截图:

由于我的代码与gcc一起工作,所以这个错误链接让我很困惑,它在编译时不会显示任何错误。
而且,如果我将我的结构和函数定义移到全局级别,而不是在main()内部,那么错误就不再存在.但是declaration is incompatible的错误是什么呢?或者我的代码有什么问题吗?
点击这里查看另一张截图以保存此页面的空白。 顺便说一句,我的VS代码的版本是1.52.0,默认的C_Cpp linting。
发布于 2020-12-17 10:13:47
嵌套函数定义不是标准C,它得到编译器扩展的支持。根据C标准,任何函数定义都需要出现在任何其他函数定义之外。
https://stackoverflow.com/questions/65338637
复制相似问题