我想在Ubuntu 9.04上使用gcc 4.3.3使用unsigned int32。
然而,当我宣布这个时:
unsigned int32 dev_number;
我收到编译错误:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘dev_number’
有什么建议吗?
答案 0 :(得分:8)
我确定你正在努力实现的目标。你想要一个名为int32的unsigned int吗?或者您是否尝试使用无符号的32位整数变量?
在后一种情况下,您可以尝试使用stdint.h,它定义了一组保证(我相信?)至少包含指定位的类型。
#include <stdint.h>
uint32_t my_var;
在前一种情况下,我看不出为什么你的线不能工作。
unsigned int32 = 42;
printf ("int32 = %u\n", int32);
按预期打印int32 = 42
。
HTH
答案 1 :(得分:7)
在您的代码中,使用stdint.h作为头文件,并使用uint32_t而不是unsigned int32。
stdint.h是C99标准库中引入的标准头文件。它允许程序员通过提供一组typedef来编写更多可移植代码,这些typedef指定精确宽度整数类型,以及使用宏定义的每种类型的最小和最大允许值。请参阅维基页面here,
以下是示例代码,
#include <stdio.h>
#include <stdint.h>
int main(void)
{
uint32_t i = 50;
printf("heloo world %d\n", i);
return 0;
}
答案 2 :(得分:3)
我可以使用此行重现您的确切错误:
unsigned int32 dev_number = 0;
你确定你没有写过类似的东西吗? C中没有int32
类型。
如果要声明无符号32位变量,请使用uint32_t
并确保#include <stdint.h>