2012-03-12 60 views
1

編譯以下程序時,出現錯誤expected ‘;’ before numeric constant 。我究竟做錯了什麼?期望';'數字常量之前

#include <stdio.h> 

#define GPIOBase 0x4002 2000 

uint32_t * GPIO_type(char type); 

int main(void) 
{ 
    GPIO_type('G'); 

    return 0; 
} 

uint32_t * GPIO_type(char type) 
{ 
    return (uint32_t *) GPIOBase; 
} 
+1

使用'gcc -E'查找並終止預處理器錯誤。 – Eregrith 2012-03-12 10:21:27

+0

@Eregrith:感謝 – Randomblue 2012-03-12 10:35:43

+0

進行投票,遇到了這個確切的問題。但在我看來,這並不明顯 – Anonymous 2012-07-18 17:46:03

回答

6

的問題是:

#define GPIOBase 0x4002 2000

你在哪裏使用它:

return (uint32_t *) GPIOBase;

變爲:

return (uint32_t *) 0x4002 2000;

哪個編譯器錯誤。在你的0x4002後面有一個流浪的2000。我懷疑你想:

#define GPIOBase 0x40022000

4

問題是這一行:

#define GPIOBase 0x4002 2000 

您正在嘗試符號GPIOBase中定義不僅僅是一個恆定的更多。當應用定義時,您的功能如下所示:

uint32_t * GPIO_type(char type) 
{ 
    return (uint32_t *) 0x4002 2000; 
} 

這是無效的C代碼。

1

擴大宏,你

return (uint32_t *) 0x4002 2000; 

這是不正確的代碼。

0

該代碼沒有意義。

你的編譯器看到:

uint32_t * GPIO_type(char type) 
{ 
    return (uint32_t *) 0x4002 2000; 
} 

這是非法的C語法。

相關問題