"declaration is incompatible" 错误在带有 C_lang linting 的 VS Code 中意味着什么?

What does "declaration is incompatible" error mean in VS Code with C_lang linting?

我正在用 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 Code 中,C_Cpp linting 开启时,我的 IDE 显示了以下错误和其他问题。

declaration is incompatible with previous "visit" (declared at line 8)

有截图:

这个错误 linting 真的让我很困惑,因为我的代码与 gcc 一起工作,它在编译时没有显示任何错误。

而且,如果我将我的 structfunction 定义移动到全局级别而不是内部 main(),那么错误不再存在...但是错误是什么 declaration is incompatible?还是我的代码有问题?

Click here to view the another screenshot to save whitespaces of this page.

By the way, the version of my VS Code is 1.52.0, with default C_Cpp linting.

嵌套函数定义不是标准 C,编译器扩展支持它。根据 C 标准,任何函数定义都需要出现在任何其他函数定义之外。