Как использовать ключевое слово auto для назначения переменной типа uint32_t или uint64_t в C ++ - PullRequest
0 голосов
/ 08 января 2019

Рассмотрим auto var = 5u;. Здесь я использую суффикс u, так что var будет выводиться как unsigned int. Есть ли способ достичь чего-то похожего для типов uint32_t или uint64_t? Есть ли суффикс в C ++ 11 или C ++ 14?

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вы всегда можете определить свой собственный суффикс

#include <cstdint>
#include <type_traits>

uint32_t operator ""_u32 (unsigned long long v) { return uint32_t (v); } 

int main ()
{
    auto v = 10_u32;

    static_assert (std::is_same <decltype (v), uint32_t>::value);
}
0 голосов
/ 08 января 2019

Я предполагаю, что вы работаете в стиле AAA , предложенном Хербом Саттером.

В этом случае хорошим решением будет просто написать:

auto variable_name = uint64_t{ 5000000000 };

Это ясно, непротиворечиво и явно напечатано без необходимости в противном препроцессоре C.


Редактировать: если вы хотите быть абсолютно уверенным при использовании литерала, можно добавить соответствующий суффикс к целочисленному литералу, чтобы обеспечить достаточно большой диапазон, при этом все еще явно вводя переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...