【问题标题】:Its showing "expected expression before while" in embedded c它在嵌入式 c 中显示“之前的预期表达式”
【发布时间】:2017-03-11 08:08:37
【问题描述】:
#include <avr/io.h>   
int main(void)
    {
        DDRB=0b11111111; //PORTB as output port connected to motors;
        DDRC=0b0000000; //PORTC Input port connected to sensors;
        int left_sensor=0;
        int right_sensor=0;
        while(1)
        {
            left_sensor=PINC&0b00000001;
            right_sensor=PINC&0b00001000 ;
            if((left_sensor==0b0000000)&&(right_sensor==0b0000000)) 
            {
                PORTB=0b00000000;
            }
            else if((left_sensor==0b00000001)&&(right_sensor==0b00001000)) 
            {
                PORTB=0b00010010;
            }
            else if((left_sensor==0b0000000)&&(right_sensor==0b0001000))
            {
                PORTB=0b00000010;
            }
            else if((left_sensor==0b00000001)&&(right_sensor==0b0000000))
            {
                PORTB=0b00010000; 
            }
        }
    }

它显示“while 之前的预期表达式”。 我已经尝试了所有方法,但我没有得到任何解决方案。

错误:Expected Expression before 'while'

编译器:Atmel Studio 7

【问题讨论】:

  • 我认为您收到此错误是因为 DDRB 和/或 DDRC 未定义。通过“”回溯并确保包含正确的设备文件。
  • 在您的问题中逐字包含编译器输出(复制和粘贴),以便我们可以看到确切的错误和编译器调用。使用的编译器及其版本也将帮助任何可能回答的人
  • Atmel Studio 7 是 IDE 而不是编译器。它可以与各种编译器一起使用。这不是完整的构建日志 - 编译器诊断对于诊断问题很有用,并且包含您忽略的信息。
  • 请使用文本常量而不是“幻数”。现在我可以明白为什么标准 C 不允许使用二进制文字了...

标签: c embedded


【解决方案1】:

如果我从您的问题中复制并粘贴代码,请删除 AVR 特定行并尝试编译它,我会得到以下信息:

source_file.c: In function ‘main’:
source_file.c:4:10: error: stray ‘\315’ in program
          int right_sensor=0;
          ^
source_file.c:4:10: error: stray ‘\276’ in program
source_file.c:5:10: error: expected ‘,’ or ‘;’ before ‘while’
          while(1)
          ^

删除声明 right_sensor 的行并重写它可以解决问题 - 您似乎在该行中有一些奇怪的非打印字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2022-01-01
    • 2014-04-20
    相关资源
    最近更新 更多