c - GCC#define 语句字节顺序错误

标签 c gcc x86 c-preprocessor endianness

对于我正在从事的项目,我使用魔数(Magic Number)。 这个宏用来定义一个

#define BOOTSIGNATURE 0xAA55

但是,当我对生成的文件进行 HEXDUMP 时,它应该显示 AA55,但它显示的是 55 AA。

GCC 是否混淆了字节顺序,还是我混淆了?该项目适用于 x86 处理器。 AA 55 需要按照该特定顺序。我可以只交换字节,但我很好奇为什么 GCC 会这样做。

最佳答案

0xAA55 是一个 int,因此您受机器的字节顺序的影响。我会将其存储为字符数组:

const unsigned char BOOTSIGNATURE[] = {0xAA, 0x55};

关于c - GCC#define 语句字节顺序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315616/

相关文章:

c - 汇编中的无符号整数

c - GCC优化错失良机

c++ - GCC 不遵守 'pragma GCC diagnostic' 以消除警告

linux - 汇编后硬编码地址更改

c - 即使所有堆 block 都已释放,Valgrind 错误

c - 如何使结构数组成为单个字符串

c - 如何在程序集中访问 C 结构值?

struct - 结构与数组的对齐规则冲突

c - 测试元素是否为数组 c

c++ - 未检测为未使用的变量