標(biāo)題: 為什么Keil編譯器會認(rèn)為我要寫匯編代碼? [打印本頁]

作者: Humorize    時間: 2019-2-2 21:27
標(biāo)題: 為什么Keil編譯器會認(rèn)為我要寫匯編代碼?
用的IDE是Keil μVision V5.26.2.0,是Keil官網(wǎng)2018年的版本,它的編譯器是C51 Compiler V9.59.0.0
  1. #include<reg51.h>
  2. typedef unsigned int u16;
  3. void main()
  4. {
  5. P0=0x01;
  6. u16 i;
  7. }

復(fù)制代碼
把聲明新變量的語句放在給8位IO口賦值的語句后會讓編譯器報如下錯誤:
  1. syntax error near 'u16', expected '__asm'
  2. 'i': undefined identifier
復(fù)制代碼
如果交換代碼的第5、6行,那么編譯器不報錯
為什么先給8位IO口賦值再聲明新變量會讓編譯器報錯


作者: HC6800-ES-V2.0    時間: 2019-2-3 08:52
申明放前面是沒有錯的。
至于為什么還不知道,也看到過全局變量寫中間也沒有報錯。
作者: mengzhixinheng    時間: 2019-2-3 09:08
c語言基礎(chǔ)語法問題
作者: iofree    時間: 2019-2-3 17:29
我估計應(yīng)該是編譯規(guī)則的問題,別的版本也有同樣情況,聲明還是要放在前面
作者: 鉆牛尖滴劉尖尖    時間: 2019-2-3 20:00

c語言基礎(chǔ)語法問題 VS 8051單片基本應(yīng)用,還要磨合一陣子了
作者: 獅巴瑞    時間: 2019-2-16 16:00
這是早期c語言規(guī)定的。把c語言標(biāo)準(zhǔn)換成c99就可以了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1