今天在用Holtek IDE3000編譯C code時遇到一個定義錯誤的問題,
程式碼內容 :
unsigned char i;
_pac=0xcf;
_pbc=0;
_pb=0;
_pac=0xcf;
unsigned char temp[6];
for (i=0;i<6;i++) temp[i]=i+0x30;
Write24C02(temp,0,6);
Read24C02(temp,0,6);
for (i=0;i<6;i++)
{
_pb=temp[i];
結果編譯後出現6個error:
Error(C2094) C:\HT-IDE3000\SAMPLE\EEPPROM_1\eeprom_01.c 177 : illegal statement termination
Error(C2051) C:\HT-IDE3000\SAMPLE\EEPPROM_1\eeprom_01.c 177 : skipping `unsigned' `char'
Error(C2129) C:\HT-IDE3000\SAMPLE\EEPPROM_1\eeprom_01.c 177 : undeclared identifier `temp'
Error(C2099) C:\HT-IDE3000\SAMPLE\EEPPROM_1\eeprom_01.c 177 : type error: pointer expected
Error(C2099) C:\HT-IDE3000\SAMPLE\EEPPROM_1\eeprom_01.c 179 : type error: pointer expected
Error(C2099) C:\HT-IDE3000\SAMPLE\EEPPROM_1\eeprom_01.c 184 : type error: pointer expected
找了半天我也找不到哪裡錯, 甚至翻C語言的書來找, 到底unsigned char temp[]這宣告哪裡有錯?
後來我只用一個動作就解決了, 就是:
unsigned char i;
unsigned char temp[6];
_pac=0xcf;
_pbc=0;
_pb=0;
_pac=0xcf;
for (i=0;i<6;i++) temp[i]=i+0x30;
Write24C02(temp,0,6);
Read24C02(temp,0,6);
for (i=0;i<6;i++)
{
_pb=temp[i];
將unsigned char temp[6]陣列的宣告搬到對晶片特殊暫存器的宣告之前, 這就完全沒問題了,
這算是這個C compiler的一個Bugㄇ?
(苦笑~~~~~)
留言列表