具有2字节(或更多)原子端序的体系结构
Architectures with 2-bytes (or more) atomic endianness
直到最近,我认为通过指定一个体系结构是big-endian
还是little-endian
,我们将涵盖大多数系统(除了middle-endian
,但这些系统并不常见)。但是,我读到,端序"原子"可以大于字节,以便这些系统:
- 小端序1字节原子
- 小端序2字节原子
将以不同的方式编码整数。
问题:原子等于或大于2的系统有多常见?
附加问题
- 原子大小是否取决于整数类型(例如
uint32_t
和uint64_t
的不同原子)? - 我是否有保证,
char
总是1字节长,甚至在系统上的2字节端序原子?
如果您需要担心您的机器的特定本机字节顺序,您可以使用ntohl()
和ntohs()
之类的函数,或者一次只读取一个字节。
不能保证char
正好是8位宽(参见<limits.h>
检查数字),但char
保证至少是8位宽(以便char[]
可以保存UTF-8字符串),sizeof(char)
保证是1。如果需要精确的8位宽类型,请使用uint8_t
。
相关文章:
- vscode g++链路故障:体系结构x86_64的未定义符号
- 体系结构x86_64的未定义符号:std:terminate(),typeinfo,运算符delete[],运算符new
- OSX clang++:用于 cpp 文件中显式实例化模板的体系结构x86_64的未定义符号
- PCL 出错:体系结构x86_64 @pcl的未定义符号
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 体系结构x86_64的未定义符号:链接器错误
- C++ std::vector<int> 体系结构的未定义符号 x86_64:
- 未使用的 asm() 在不受支持的体系结构上的行为
- 用于本地网络运行的客户端服务器体系结构
- 生成文件:体系结构x86_64的未定义符号
- Xcode"体系结构x86_64的未定义符号"
- 有了memory_order_relaxed,原子变量的总修改顺序如何在典型体系结构上得到保证
- 体系结构x86_64的未定义符号:找不到原因
- 在OSx:ld上使用CMake构建C++项目:找不到体系结构x86_64的符号
- 体系结构x86_64的未定义符号:c++/ h 文件和 cpp 文件
- 以编程方式在运行时检测 CPU 体系结构
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- Unicode 友好的体系结构,用于将 Python 的字符串和字节类型桥接到C++
- 为什么是32位x86体系结构上“int64_t”8字节的默认对齐方式
- 具有2字节(或更多)原子端序的体系结构