Je recherche une macro représentant la valeur maximale de uint64_t
comme UINT_MAX
est pour unsigned int
. c'est-à-dire que j'ai besoin que cette valeur soit garantie (1 << 64) -1.
J'ai essayé d'utiliser UINT64_MAX
, mais la compilation avec g ++ entraîne:
'UINT64_MAX' was not declared in this scope
Il convient de mentionner que j'ai cette ligne #define __STDC_LIMIT_MACROS
dans le code avant d'utiliser UINT64_MAX
.
J'ai été surpris de ne pas trouver d'informations utiles sur le Web à ce sujet.
L'utilisation portative de l'en-tête cstdint
peut être un véritable défi (il manque dans certaines implémentations MSVC). En même temps, numeric_limits::max()
peut être difficile à utiliser sans constexpr
et il n'est pas réellement nécessaire de travailler avec uint64_t
. Si vous ne vous souciez pas trop de ces choses, std::numeric_limits<uint64_t>::max()
fera très probablement l'affaire.
Boost.Integer a une implémentation de cstdint
et est livré avec une classe de traits supplémentaires pour obtenir une valeur maximale constante. Une implémentation conforme de cstdint
devrait également fournir la macro UINT64_MAX
, Mais je ne suis pas sûr de boost.