【发布时间】:2023-03-12 05:57:01
【问题描述】:
我有“哈希”,它是一个结构的指针。我正在尝试获取它的成员统计信息,这也是一个指针。我以为我可以这样做: hash->stats 但这似乎返回了参考统计数据结构。 “->”应该只是取消引用左侧的变量吗?
struct statistics {
unsigned long long count;
...
};
struct hashtable {
GHashTable * singleton; //Single Hash Table to Store Addresses
struct statistics *stats; //Statistics Table
};
GHashTable *ghash = g_hash_table_new(NULL, NULL);
struct hashtable *hash = (struct hashtable *) malloc(sizeof(struct hashtable));
//Works but why isn't hash->stats ok?
memset(&hash->stats, 0, sizeof(struct statistics));
如果我此时尝试这个:
struct statistics *st = hash->stats;
我明白了:
incompatible types when initializing type 'struct statistics *' using type 'struct
statistics'
【问题讨论】:
-
struct m61_statistics是什么? -
@Rohan,抱歉我刚刚更新了,应该都是struct statistics
-
@user994165 你告诉我们的应该没问题。所以有些事情你没有告诉我们。也许您在某处混淆了某些类型,包含了错误的头文件等。创建一个小但 100% 完整的示例,其中包含所需的每段代码,以便我们查看整个图片。
-
从错误信息来看,编译器试图告诉你它认为
struct hashtable的stats成员不是struct statistics *,而是一个普通的struct statistics。因此,您需要返回并查看您的struct hashtable的真正定义位置。如有必要,您可能需要查看预处理器输出(例如使用gcc -E)。