CLANG / GCC C解析器将静态指针识别为函数

时间:2012-11-14 23:20:00

标签: android c gcc android-ndk clang

我正在尝试从Batctl 2011.2.0汇编bat-hosts.c。但是,这是来自Android NDK rev的CLANG 3.1编译器发出的错误消息。图8c:

  

bat-hosts.c:41:1:错误:函数声明符中的存储类说明符无效

我在相同的NDK版本中从GCC 4.6收到类似的错误消息。

第41行:

static struct hashtable_t *host_hash = NULL;

这个指向hashtable_t结构的指针(在hash.h中定义)在任何函数之外声明为静态,并在声明时指向NULL,我发现它是有效的。

我尝试将std选项设置为gnu11c11gnu1xc1xc99来运行GCC / CLANG。< / p>

我的问题是:

  

为什么编译器将此指针标识为函数声明?

提前致谢

编辑: 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如果您愿意,可以发布回复,我会将其标记为答案。

1 个答案:

答案 0 :(得分:1)

根据要求:

  

hashdata_compare_dbhashdata_choose_cb的typedef是什么?那里有存储类吗?基本上,您应该向我们展示一个再现问题的SSCCE(Short, Self-Contained, Correct Example)。应包括所有(但仅限于)必要的标题。它应尽可能只使用标准标题。

     

通常,创建SSCCE的过程无论如何都会帮助您解决问题。

事实上,创建一个SSCCE似乎至少让你对你的问题有了新的看法。

跟踪问题的其余部分,祝你好运。