指向头文件中的__u32的指针

时间:2011-04-29 13:44:21

标签: linux header linux-kernel

我需要传递一个像这样的指针

extern int Si4709_dev_chan_get(__u32 *);

但gcc抱怨缺少括号。

Si4709_dev.h:130: error: expected ‘)’ before ‘*’ token

关于我能做什么的任何想法?

-Earlence

2 个答案:

答案 0 :(得分:2)

也许您需要包含包含__u32 typedef的标头,通常为<asm/types.h><sys/types.h>

在任何情况下,它们都不应该是可移植的,你应该依赖于像uint32_t那样更容易移植的东西,它应该是符合C99的实现的标准(它应该在stdint.h中。

答案 1 :(得分:0)

这是一个旧的,可能是死的问题,但似乎对__u32实际上是什么有些混淆,但至少在3.16.1中,这就是我现在正在看的,__ u32定义于。 /include/uapi/asm-generic/int-ll64.h因此:

typedef unsigned int __u32;

所以,它只是一个无符号整数。

否则,你的语法是错误的,因为这是一个函数定义,你需要将指针命名为在函数中引用它:

extern int Si4709_dev_chan_get(__u32 *x);

否则,请参阅此内容以获取更多信息。

http://en.wikipedia.org/wiki/Pointer_%28computer_programming%29#Pass-by-address_using_pointers