c - C 中的原始数据类型,用于表示 CPU 架构的 WORD 大小

标签 c memcpy

我观察到 long 的大小总是等于任何给定 CPU 架构的 WORD 大小。对所有架构都是如此吗?我正在寻找一种可移植的方式来表示 C 中 WORD 大小的变量。

最佳答案

C 不处理指令。在 C99 中,您可以使用单个赋值复制任何大小的 struct:

struct huge { int data[1 << 20]; };
struct huge a, b;
a = b;

使用智能编译器,这应该会生成最快的(单线程,尽管将来希望是多线程)代码来执行复制。

如果您想要供应商定义的“尽可能快”的整数类型,则可以使用 int_fast8_t 类型。这可能与字长相对应,但不能保证它甚至是单指令可写的。

我认为您最好的选择是默认为一种类型(例如 int)并使用 C 预处理器针对某些 CPU 进行优化。

关于c - C 中的原始数据类型,用于表示 CPU 架构的 WORD 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2489369/

相关文章:

go - 如何将 int 数组快速转换为字节数组?

java - 将我的 Android 应用程序导出到 iPhone?

c - fork 的子进程以 -1 退出,但 WEXITSTATUS 得到 255

c - I/O 完成端口中的 select() 等价

c - 如何修改已传递给 C 函数的指针?

c - aeabi_fmul 从哪里链接?

c - Memcpy - 为数据 block 赋值

C++ memcpy 到 malloc 内存

ios - iOS 如何处理低级 C/Objective-C 代码的内存损坏?

c - 替代 memcpy