我们希望使用一些预处理器指令在C中编写与字节无关的代码。我们可以定义一个预处理器指令,它可以帮助我们在编译期间检查机器的字节顺序吗?我们想要类似下面的示例代码。任何帮助将不胜感激。
#if(some conditions)
#define LITTLE_ENDIAN 1
#else
#define LITTLE_ENDIAN 0
#endif
我知道有几个解决方案,但那些不符合我的要求。我不想在大端机器中编译小端特定代码,反之亦然。例如
#if LITTLE_ENDIAN
line1..
line2..
line3..
#else
line4..
line5..
line6..
#endif
在big endian机器上,我不想编译1,2和3行。这三行应该被禁用。
答案 0 :(得分:0)
我不确定是否有可能。我在Android NDK中使用CMake,并且有一个CMake小部件来执行此测试。
不幸的是,它在主机(windows)计算机上运行,而不是理解目标(android)设备。
需要有一个已发布的机制(例如编译器提供的值)才能使其正常工作,我不知道任何此类全局值。
添加指向潜在重复SO : detect endianness的链接。有些方法看起来似乎有道理。