ISO C90禁止因为数组的混合声明和代码。 我该如何解决?(ISO C90 forbids m

2019-10-20 17:39发布

我尝试使用编译它-gcc和它的工作如预期,但与添加时-pedantic ,它不会编译。 我仍然在编程相当初学者,这是我第一次遇到这个问题,所以这对我来说是相当有问题。

下面是导致该错误的代码:

char *exercise[5]={"swimming", "running", "brisk walking", "weight lifting", "zumba"};

我会很感激,如果你能解释的解决办法是什么,而不只是固定的代码,因为我想学习。

Answer 1:

这有没有关系阵列具体。 标准化的C语言(ISO C90)的原始版本禁止混合声明和代码。

在C90每个局部块包围{}具有相当严格的结构:其与声明开始(如果有的话),然后将其随后语句(代码)。

这就是你必须遵循的格式。 移动你的数组声明的块的顶部。 它应该是微不足道的,因为没有你的初始化依赖于任何运行时间计算。 这里的所有都是它的。

{
  /* Declarations go here */
  char *exercise[5]={"swimming", "running", "brisk walking", "weight lifting", "zumba"};

  /* Statements (i.e. code) goes here */
}

当然,这里的潜问题是:你真的必须使用C90? 是你明确要求写您的C90编译器的代码? 也许你应该你的编译器只需切换到C99模式,而忘记了这个特定的C90-限制?

在C语言(C99和更高版本)新版本,你可以自由组合语句和声明。 GCC可以通过指定被切换到C99模式-std=c99在命令行。



文章来源: ISO C90 forbids mixed declarations and code because of arrays. How do I fix this?