首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是“声明是不相容的”错误意味着在VS代码与C_lang linting?

什么是“声明是不相容的”错误意味着在VS代码与C_lang linting?
EN

Stack Overflow用户
提问于 2020-12-17 10:12:00
回答 1查看 526关注 0票数 0

我正在用C语言编写一个简单的代码,这是可行的。

它在没有错误的情况下编译和执行,给出预期的输出。

代码语言:javascript
复制
#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显示了下面的错误和其他问题。

代码语言:javascript
复制
declaration is incompatible with previous "visit" (declared at line 8)

截图:

由于我的代码与gcc一起工作,所以这个错误链接让我很困惑,它在编译时不会显示任何错误。

而且,如果我将我的结构和函数定义移到全局级别,而不是在main()内部,那么错误就不再存在.但是declaration is incompatible的错误是什么呢?或者我的代码有什么问题吗?

点击这里查看另一张截图以保存此页面的空白。 顺便说一句,我的VS代码的版本是1.52.0,默认的C_Cpp linting。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-17 10:13:47

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65338637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档