gpt4 book ai didi

c - 这个 C99 IS_LITTLE_ENDIAN 宏可移植吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:55 25 4
gpt4 key购买 nike

在寻找编译时字节序检测宏时,我发现了这个:

#define IS_LITTLE_ENDIAN (1 == *(unsigned char *)&(const int){1})

根据 an answer to C Macro definition to determine big endian or little endian machine? ,这可以在编译时评估(至少使用 GCC)并且不假定任何内存对齐。这真的是可移植的吗(假设 C99 可用),如果是的话,这个宏的注意事项是什么?

最佳答案

这里确实没有未定义的行为,因此在这个意义上它是可移植的。

但条件不一定证明 IS_LITTLE_ENDIANness。

int 的存储安排主要留给实现。除了经典的小端和大端方案之外,还有其他选择,您的宏可能会产生误报。

关于c - 这个 C99 IS_LITTLE_ENDIAN 宏可移植吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42948670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com