【问题标题】:Why doesn't this compile in C18?为什么这不能在 C18 中编译?
【发布时间】:2010-10-19 17:26:17
【问题描述】:

我正在尝试使用 MPLAB C18 v3.36 编译器编译以下代码。

编译器在 'char rij;' 上返回语法错误。 但是当我放 char rij 时;前一行(在 TRISA = ... 之前),它编译 ...

void setup(void)
{
 TRISD = 0b00000000;
 TRISA = 0b00000000;
 char rij;
 for (rij = 0; rij<ROWS; rij++)
 {
 red_byte_array[rij]=0;
 green_byte_array[rij]=0;
 blue_byte_array[rij]=0;
 }    
}

【问题讨论】:

  • 嗯,你知道在 C 中(C99 之前)你必须把你的声明放在第一位。

标签: c microchip pic18


【解决方案1】:

虽然我不熟悉这个编译器,但我猜它遵循 C89 语义,禁止将声明与语句混合。因此只能在块的开头声明变量。

【讨论】:

  • 又名:将char rij 放在函数的顶部。
  • 这个猜测是正确的——编译器网页 (microchip.com/stellent/…) 上最好的夸耀是“ANSI '89 兼容性”。所以没有混合声明和代码,可能没有 // cmets(尽管它在 C99 之前很久就已经是一个常见的扩展)和其他各种你不太可能被常见的 C 代码绊倒的变化。
猜你喜欢
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
  • 2012-10-24
相关资源
最近更新 更多