今天在用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ㄇ?

(苦笑~~~~~)

 

arrow
arrow
    全站熱搜

    fishark 發表在 痞客邦 留言(3) 人氣()