C - Glib GINT_TO_POINTER可移植性

1 c performance portability glib

我正在处理来自哈希表的大量数字.我想知道将它们添加到常量(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)); // ?
Run Code Online (Sandbox Code Playgroud)

小智 5

我不熟悉gnome库,但是从GNOME文档库中:

你可能不会在整数中存储指针.这不是任何方式形式的便携式.这些宏只允许在指针中存储整数,并且只保留整数的32位; 超出32位整数范围的值将被破坏.

唯一不可移植的是将指针存储在整数中.如果你只是:

  • 将指针存储为整数.(不是整数指针).
  • 整数不超过32位.

应该没问题.