【发布时间】:2013-02-02 09:43:39
【问题描述】:
是否有一种简单的方法可以使用 gcc 或任何在线编译器(如 ideone 用于大端)来测试代码?我不想使用 qemu 或虚拟机
编辑
有人可以解释这段代码在使用大端序的系统上的行为吗?
#include <stdio.h>
#include <string.h>
#include <stdint.h>
int main (void)
{
int32_t i;
unsigned char u[4] = {'a', 'b', 'c', 'd'};
memcpy(&i, u, sizeof(u));
printf("%d\n", i);
memcpy(u, &i, sizeof(i));
for (i = 0; i < 4; i++) {
printf("%c", u[i]);
}
printf("\n");
return 0;
}
【问题讨论】:
-
包括
endian.h并尝试类似if __BYTE_ORDER == __LITTLE_ENDIAN -
Debian/Ubuntu 上的多架构使 qemu 比您想象的要简单得多...
-
几乎 100% 确定任何在线“编译器农场”都是基于 x86 的。买其他东西太贵了……
-
我建议编写不关心整数底层字节顺序的代码...
-
@modifiablelvalue:并非总是可能的。我不知道这里是不是这样。
标签: c gcc endianness