【问题标题】:How do I use Visual Studio 2017 to only compile C code and not take into account c++?如何使用 Visual Studio 2017 只编译 C 代码而不考虑 c++?
【发布时间】:2019-07-19 01:54:20
【问题描述】:

在 C 语言中,不允许在第一个函数语句之后进行声明,但是,当我编译出现此错误的程序时,它仍然可以工作,并且 c++ 会接管。我该如何阻止这种情况发生?

【问题讨论】:

  • 如果您指的是所有变量都必须在作用域的开头声明的要求,那么自 C90 以来,C 中就没有这种情况了。
  • 自 C99 标准(今年 20 年前发布)以来,您也可以在语句之间进行声明。现在 Visual Studio 几乎支持所有 C99。
  • 您是否有理由不想要这种行为。我们生活在 21 世纪。
  • 这不是错误。 VS 2017 允许您在任何范围内的任何位置定义变量。 “C++ 接管”是什么意思?
  • 您的源文件名应该以 .c 扩展名而不是 .C++ 结尾

标签: c visual-studio visual-studio-2017


【解决方案1】:

Visual Studio 2017 使用的 C 编译器或多或少符合 C99。

在 C99 中,变量可以在作用域开头的其他地方声明,就像在 C++ 中一样。

所以这段代码 sn-p 是有效的 C99,但不是有效的 C89:

int foo(void)
{
  printf("Hello. ");
  int bar = 2;
  printf("Bar = %d\n", bar);
}

这是有效的 C89:

int foo(void)
{
  int bar = 2;
  printf("Hello. ");
  printf("Bar = %d\n", bar);
}

更多信息在这里:https://en.wikipedia.org/wiki/ANSI_C#C89

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2019-09-05
    • 2021-08-21
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    相关资源
    最近更新 更多