首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MPLab /C程序/变量

MPLab /C程序/变量
EN

Stack Overflow用户
提问于 2012-05-03 11:56:33
回答 3查看 514关注 0票数 0

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

代码语言:javascript
运行
复制
unsigned char counter;

在me...even看来,使用unsigned char counter1并没有错;而且它仍然向我抛出了一个语法错误。怎么回事?有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-04 00:07:50

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

这些是可以接受的:

代码语言:javascript
运行
复制
void functionname(void)
{
    unsigned char counter;

    /* rest of code */
}

void functionname(void)
{
    /* code */

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

}

这是不可接受的:

代码语言:javascript
运行
复制
void functionname(void)
{
    /* code */

    unsigned char counter = 0; 

    /* more code */

}
票数 1
EN

Stack Overflow用户

发布于 2012-05-03 12:28:17

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

代码语言:javascript
运行
复制
  so you can't access it by counter[1].
票数 0
EN

Stack Overflow用户

发布于 2017-11-23 16:00:56

您可以在main中定义局部变量,但应该定义它们,使它们不跟在变量赋值块或代码执行块之后。

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

代码语言:javascript
运行
复制
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++; 
}

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

代码语言:javascript
运行
复制
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 */ 
}

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10424885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档