我正在尝试bat-hosts.c
从Batctl 2011.2.0编译。但是,这是 CLANG 3.1 编译器从 Android NDK rev 发出的错误消息。8c:
bat-hosts.c:41:1:错误:函数声明器中的存储类说明符无效
我在同一个 NDK rev 中从 GCC 4.6 收到类似的错误消息。
第 41 行内容如下:
static struct hashtable_t *host_hash = NULL;
这个指向结构的指针hashtable_t
(在 中定义hash.h
)在任何函数之外被声明为静态,并在声明时指向NULL
,我认为这是有效的。
std
我尝试在选项设置为gnu11
、c11
、gnu1x
、c1x
和的情况下运行 GCC/CLANG c99
。
我的问题是:
为什么编译器将此指针标识为函数声明?
提前致谢
编辑:
hashtable_t
结构定义:
struct hashtable_t {
struct element_t **table; /* the hashtable itself, with the buckets */
int elements; /* number of elements registered */
int size; /* size of hashtable */
hashdata_compare_cb compare; /* callback to a compare function.
* should compare 2 element datas for their keys,
* return 0 if same and not 0 if not same */
hashdata_choose_cb choose; /* the hashfunction, should return an index based
* on the key in the data of the first argument
* and the size the second */
};
第二次编辑:谢谢大家的帮助。在按照@JonathanLeffler 的建议创建了一个 SSCCE 之后,我发现这个问题与一个额外的库有关,我忘记了我包括在内。很抱歉浪费您的时间:-/
@JonathanLeffler,如果您愿意,您可以发布回复,我会将其标记为答案。