À l'aide de intptr_t au lieu de void*?

Est-ce une bonne idée d'utiliser intptr_t comme un usage général de stockage (pour contenir des pointeurs et des valeurs entières) au lieu de void*? (Comme on le voit ici: http://www.crystalspace3d.org/docs/online/manual/Api1_005f0-64_002dBit-Portability-Changes.html)

Pour ce que j'ai déjà lu:

  • int -> void* -> int aller-retour n'est pas garanti pour contenir la valeur d'origine; je suppose que int -> intptr_t -> int fera
  • pointeur de l'arithmétique sur les deux void* et intptr_t besoin de moulages, de sorte qu'aucun obtient l'avantage ici
  • void* signifie moins de conversions explicites lors de stocker des pointeurs, intptr_t signifie moins de jette, lors du stockage des valeurs entières
  • intptr_t nécessite C99

Quoi d'autre dois-je prendre en considération?

  • Pas de. (Si c'était le cas, ils n'auraient qu'ajouté intptr_t de la sémantique à la void*)
  • Le poste demande "(pour contenir des pointeurs et des valeurs entières)", mais alors seulement explique int, void * et intptr_t. Comme uintmax_t, size_t, long long, etc. sont également des types d'entiers, on dirait que la question est seulement sur les pointeurs d'objet, intptr_t et int types.
InformationsquelleAutor Gepard | 2012-02-29