【问题标题】:Visual Studio C function syntax errorVisual Studio C 函数语法错误
【发布时间】:2014-07-07 17:44:16
【问题描述】:

我正在尝试在 Visual Studio 中实现这样的 C 函数,我关注了 Creating a C Project in Visual Studio

void changeParameters(int &a, int n) {
   for (int i=0; i<n; ++i) {
      printf("some text goes here");
   }
}

但是,我收到以下错误

  1. 语法错误&
  2. 未声明的标识符 i

我尝试过 VS 2008 和 2010,但同样的错误

这是 C99 的功能吗?我记得我可以在 Visual Studio C++ 6.0 中编译这种代码

【问题讨论】:

  • 可能想将 int &amp;a 更改为 int *a(这意味着更新函数主体中对 a 的任何引用),但因为您从不使用a 无法确定。
  • @感谢大家的及时回复。我强制文件编译为 C++,现在可以了
  • 你是如何强制它编译为 C++ 的?如果您使用 .cpp 后缀命名它,它应该被自动视为 C++。如果您将名称保留为blah.c,但强制它编译为 C++,那么您就是在自找麻烦。
  • @KeithThompson 抱歉用错了词,我想强调这种代码应该用 C++ 编译器编译。在 VS 中设置 Default 将导致它根据文件扩展名选择 C ​​或 C++ 编译器
  • 如果您没有特别的理由使用旧版本,您应该使用 Visual Studio 2013 来获得对 C 中 for-loops 初始声明的支持。

标签: c visual-studio function c99 undeclared-identifier


【解决方案1】:

C 没有引用。这个函数声明

void changeParameters(int &a, int n);

将第一个参数定义为对 int 的引用。您可以尝试将函数声明更改为

void changeParameters(int *a, int n);

考虑到 MS VS 2010 甚至不支持 C99 不谈论最新的 C 标准。

【讨论】:

    【解决方案2】:
    for (int i=0; i<n; ++i)
    

    for 循环中的i 声明是 c99 功能,c89 不支持。 C++ 也支持它。

    在 C 中也不支持引用(c89 / c99 / c11 也不支持):

    void changeParameters(int &a, int n) 
    

    由于int &amp;a 参数,此函数声明无效。

    【讨论】:

      猜你喜欢
      • 2014-04-13
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 2022-11-30
      • 2015-10-28
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多