web-dev-qa-db-fra.com

Macro représentant la valeur maximale pour uint64_t

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.

23
Subway

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.

19
pmr