This question already has answers here:
Determining endianness at compile time
                                
                                    (12个答案)
                                
                        
                        
                            Detecting Endianness
                                
                                    (14个回答)
                                
                        
                                2年前关闭。
            
                    
我们想使用一些预处理指令在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


在大字节序计算机中,我不想编译第1,2和3行。应该禁用这三行。

最佳答案

我不确定是否有可能。我在Android NDK中使用CMake,并且有一个CMake小部件来执行此测试。

不幸的是,它在主机(Windows)计算机上运行,​​而不是在目标(android)设备上运行。

需要有一种已发布的机制(例如,编译器提供的值)才能使其正常工作,我不知道任何此类全局值。

将链接添加到可能重复的SO : detect endianness。那里的一些方法看起来合理。

关于c++ - 确定计算机字节序的条件预处理器指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46680849/

10-11 15:33