【发布时间】:2013-08-08 16:17:24
【问题描述】:
我有两个编译器,一个可以识别 uint8_t(GCC ARM-EABI),一个不识别(Renesas M16 Standard Toolchain)。
瑞萨工具链不符合 ANSI C,因此您可以丢弃 .所以 uint8_t, uint16_t,... 没有被定义为现有类型。
为了保持可移植性,我希望有相同的类型(最好是uint8_t,由于int的歧义)。
我的平台也是不同大小的处理器(ARM 是 32 位,瑞萨是 16 位)。导致 int 为不同的值。
有没有办法检查 uint8_t 是否作为类型存在?
如果不是,将其(以及其他 uint16_t、uint32_t、...)声明为类型?
【问题讨论】:
-
瑞萨工具链中是否存在
uint_least8_t? -
std::is_same<unsigned char, uint8_t>::value. -
制作一个包含
的头文件,如果当前编译器是 Renesas 则定义这些类型,否则什么都不做。 -
我认为 uint_least8_t 不存在