|
|
1
18
C99,TC3的内容如下:
在大多数实现中,使用最多4个单字节字符的整数字符常量是安全的。但是,不同系统之间的实际值可能不同(endianness?)。 这实际上已经在ANSI-C89标准第3.1.3.4节中定义:
|
|
|
2
6
单引号表示字符,而不是C中的字符串。因此,每个枚举都有一个32位的值,由四个字符的字符代码组成。实际值取决于字符编码,但我假设为8位字符。注意有 不 追加\0。 您可以将枚举用于正常比较/分配目的。与任何枚举一样,基础类型为整数。 我已经在嵌入式系统中多次使用这种技术来创建4个字符的“名称”,这些名称在十六进制转储/调试器上下文中是人类可读的。 |
|
3
2
如前所述,这些是使用字符常量声明的整数。 当使用多个字符的字符常量声明整数时,它对 byte order 为其开发常数的机器。由于所有原始的Mac API都在PPC或更早的机器上,因此它们与Intel相比是落后的 Little-Endian 机器。 如果你只为英特尔公司做产品,你可以手工改变订单。 如果要构建通用二进制文件,则需要使用 flipping function 例如 CFSwapInt32BigToHost 如果无法更正这些代码,那么不管编译器是否存在错误,您将得到只能在PowerPC机器上工作的代码。 |
|
|
4
0
编辑:对不起,很明显这是有效的C。我只在Mac代码中看到过,所以错误地认为这是苹果特有的。 |