编译以下程序时,出现错误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;
}
答案 0 :(得分:7)
问题是:
#define GPIOBase 0x4002 2000
你在哪里使用它:
return (uint32_t *) GPIOBase;
变为:
return (uint32_t *) 0x4002 2000;
哪个是编译器错误。 2000
之后有一个迷路0x4002
。我怀疑你想要:
#define GPIOBase 0x40022000
答案 1 :(得分:4)
问题是这一行:
#define GPIOBase 0x4002 2000
您尝试在符号GPIOBase
中定义的不仅仅是常量。应用定义时,您的函数如下所示:
uint32_t * GPIO_type(char type)
{
return (uint32_t *) 0x4002 2000;
}
哪个是无效的C代码。
答案 2 :(得分:1)
扩展宏,你得到
return (uint32_t *) 0x4002 2000;
这是不正确的代码。
答案 3 :(得分:0)
代码没有意义。
您的编译器会看到:
uint32_t * GPIO_type(char type)
{
return (uint32_t *) 0x4002 2000;
}
这是非法的C语法。