2014-12-13 53 views
-2

我正在學習如何在C編程。使用頭文件在C編譯錯誤

我收到以下錯誤。我試圖重寫我的代碼幾次,但我根本不明白在這種情況下要做什麼。非常感謝幫助。在下面,我列出了編譯錯誤和項目中包含的所有文件及其源代碼。 enter image description here main.c中

#include "ports.h" 
#include "KeyboardML15.h" 

int main(){ 
    int get_key(void); 
    return 0; 
} 

KeyboardML15.c

int get_key(void){ 

    int msbSet; 


    while(1)(

    msbSet = MSB & Key_Decode_Register: 
    if(msbSet){ 
     return Key_Decode_Register; 
    } 
    } 
    return 0; 
} 

Keyboard.h

int get_key(void); 

ports.h

#define IRQ_VECADR 0x3FF2 
#define IRQ_VEC  *((vecptr) IRQ_VEQ_ADR) 

#define set(x, mask) (x) = (x) | (mask) 
#define clear(x, mask) (x) = (x) & ~(mask) 


typedef unsigned char * port8ptr; 
typedef unsigned short * port16ptr; 
typedef unsigned long *port32ptr; 

unsigned char ML4shadow = 0; 
unsigned char MSB = 128 

#define ML4OUT_ADDRESS 0x400 
#define ML4OUT *((port8ptr) ML4OUT_ADDRESS) 

#define ML4IN_ADDRESS 0x600 
#define ML4IN *((port8ptr) ML4IN_ADDRESS) 

#define Key_Decode_Register_ADDRESS 0x9C0 
#define Key_Decode_Register *((port8ptr) Key_Decode_Register); 



#ifdef SIMULATOR 
    #define DRILLSTATUS_ADDRESS 0x401 
#else 
    #define DRILLSTATUS_ADDRESS 0x600 
#endif 

回答

1

似乎在類型下面的代碼:

msbSet = MSB & Key_Decode_Register: 
while(1)(

將其更改爲

msbSet = MSB & Key_Decode_Register; 
while(1){ 
    if(msbSet){ 
     return Key_Decode_Register; 
    } else { 
     //dont you want to return? or else you will end up running in infinite loop 
    } 
+0

我已經在代碼中的變化。所以msbSet不斷重新啓動。它應該在while循環中。這就是說,問題在於,在ports.h中定義的語句無法找到,而現在我不能做什麼來使其在文件中可見。 – Taiga 2014-12-13 19:35:17

+0

這個想法是,一個按鈕被按下,當它發生時,它應該稍後顯示在顯示器上。因此無限while循環。我們基本上都在等待一個按鈕被按下並不斷讀取,直到發生這種情況 – Taiga 2014-12-13 19:36:39