gpt4 book ai didi

C - Glib GINT_TO_POINTER 可移植性

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:54 26 4
gpt4 key购买 nike

我正在处理来自哈希表的大量数字。我想知道考虑到可移植性,将它们添加到常量 (100) 的好方法是什么。 Glib 的文档强调使用 GINT_TO_POINTER 是不可移植的。任何想法将不胜感激!

gpointer v, old_key;
gint value; // ?

if(g_hash_table_lookup_extended(table, key, &old_key, &v)){
value = GPOINTER_TO_INT(v); // ?
value = value + 100;
}
g_hash_table_replace(table, g_strdup(key), GINT_TO_POINTER(value)); // ?

最佳答案

我对gnome库不熟悉,但是来自GNOME Documentation Library :

YOU MAY NOT STORE POINTERS IN INTEGERS. THIS IS NOT PORTABLE IN ANY WAY SHAPE OR FORM. These macros ONLY allow storing integers in pointers, and only preserve 32 bits of the integer; values outside the range of a 32-bit integer will be mangled.

唯一不可移植的是用整数存储指针。如果你只是:

  • 用指针存储整数。 (不是整数指针)。
  • 整数不超过32位。

应该没问题的。

关于C - Glib GINT_TO_POINTER 可移植性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3499281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com