0

我安装了 MPLab V8.43 并且刚刚安装了 C18 编译器进行编程。每当我尝试构建一个小的测试代码时,它都会在第一个变量声明处停止。它说有一个语法。

unsigned char counter;

在我看来并没有错……甚至将其作为 unsigned char counter[1]; 它仍然向我抛出了一个语法错误。是什么赋予了?有任何想法吗?

4

3 回答 3

1

局部变量必须在块(在本例中为函数)的顶部声明。这是根据 C89 标准。

这些是可以接受的:

void functionname(void)
{
    unsigned char counter;

    /* rest of code */
}

void functionname(void)
{
    /* code */

    for (unsigned char counter = 0; counter<30; counter++)
    {
    }

}

这是不可接受的:

void functionname(void)
{
    /* code */

    unsigned char counter = 0; 

    /* more code */

}
于 2012-05-03T16:07:49.913 回答
0

因为您有 char 数据类型的计数器变量。但它不是数组或字符串。

  so you can't access it by counter[1].
于 2012-05-03T04:28:16.737 回答
0

您可以在 main 中定义局部变量,但它们应该被定义,这样它们就不会跟随变量分配块或代码执行块。

这是 MPLAB C18 中的有效变量声明/定义:

void main ()
{
    /* Declare or Define all Local variables */
    unsigned char counter;   
    unsigned char count = 5;

    /* Assignment Block or the code Execution Block starts */ 
    conter++;
    count++; 
}

但是,这是无效的,并且会导致“语法错误”:

void main ()
{
    /* Declare or Define all Local variables */
    unsigned char count = 5;

    /* Assignment Block or the code Execution Block starts */ 
    count++; 

    /* What??? Another variable Declaration / Definition block */ 
    unsigned char counter;     /* Hmmm! Error: syntax error */ 
}

希望有帮助!

于 2017-11-23T08:00:56.297 回答