AFAIK, на данный момент не существует стандартизированного способа получения типов с плавающей запятой фиксированной ширины - я думаю, потому что, в отличие от целочисленных типов, float
и double
более или менее везде одинаковы (32 бита float
, 64 бит double
, с отдельными типами для "странных" типов FP).
Тем не менее, если вы хотите быть более уверенным, вы можете сделать статическое утверждение перед созданием typedef:
#include <climits>
static_assert(sizeof(float)*CHAR_BIT==32, "float is not 32 bit on this architecture, fix the f32 typedef.");
typedef float f32;
Таким образом, на «нормальных» платформах это будет работать безупречно, в то время как на «странных» платформах он не сможет скомпилироваться, что даст вам возможность добавить специфичную для платформы typedef
.
Что касается I32, достаточно включить <cstdint>
и создать свой typedef:
#include <cstdint>
typedef std::int32_t i32;