указатель на __u32 в заголовочном файле - PullRequest
1 голос
/ 29 апреля 2011

Мне нужно передать указатель примерно так

extern int Si4709_dev_chan_get(__u32 *);

, но gcc жалуется на отсутствие скобок.

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

есть идеи, что я могу сделать?-Earlence

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

Возможно, вам нужно включить заголовок, который содержит typedef для __u32, обычно это <asm/types.h> или <sys/types.h>.

В любом случае они не должны быть переносимыми, вы должны полагаться на что-тоскорее всего, он будет переносимым, как uint32_t, который должен быть стандартным для реализаций, соответствующих C99 (и он должен быть в stdint.h.

0 голосов
/ 24 марта 2015

Это старый, возможно, мертвый вопрос, но, похоже, существует некоторая путаница с тем, что на самом деле представляет собой __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

...