error: expected specifier-qualifier-list before ‘uint8_t’

转载请注明出处: http://blog.csdn.net/zhangyang0402/archive/2010/07/22/5754132.aspx

 

编写一个PF_KEY的测试程序,但一编译就出现了问题。

源代码如下:

# gcc test.c -o test
In file included from test.c:3:
/usr/include/linux/pfkeyv2.h:15: error: expected specifier-qualifier-list before ‘uint8_t’
/usr/include/linux/pfkeyv2.h:27: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:33: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:45: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:55: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:64: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:72: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:81: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:97: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:110: error: expected specifier-qualifier-list before ‘uint8_t’
/usr/include/linux/pfkeyv2.h:130: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:142: error: expected specifier-qualifier-list before ‘uint8_t’
/usr/include/linux/pfkeyv2.h:151: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:160: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:167: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:178: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:189: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:203: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:212: error: expected specifier-qualifier-list before ‘uint16_t’
/usr/include/linux/pfkeyv2.h:221: error: expected specifier-qualifier-list before ‘uint16_t’

 

很是奇怪,可能linux/pfkeyv2.h中的uint8, uint16出了问题。grep了一下,发现linux/types.h 和stdint.h中都对uint8_t, uint16_t进行了定义.

linux/types.h
typedef         __u8            uint8_t;
typedef         __u16           uint16_t;
typedef         __u32           uint32_t;
这里只看uint8_t
__u8是在asm/types.h中定义的
typedef unsigned char __u8;

 

stdint.h
typedef unsigned char           uint8_t;
typedef unsigned short int      uint16_t;
#ifndef __uint32_t_defined
typedef unsigned int            uint32_t;
# define __uint32_t_defined
#endif

 

测试结果
#include linux/types.h,依然出现错误,这个是显然的。linux/pfkeyv2.h中include的就是linux/types.h

#include stdint.h,就没问题了。

 

对于这一点,实在有点搞不清楚。有清楚的同仁麻烦告诉一下。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值