在数字常量之前预期';'

时间:2012-03-12 09:48:51

标签: c

编译以下程序时,出现错误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;
}

4 个答案:

答案 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语法。