在 64 位上定义 32 位
define 32bit on 64bit
我这里有一些 C 文件(你不需要知道里面有什么),它处于稳定的 32 位模式(使用 gcc -m32),现在我想做更多的 64 位(gcc -m64)它有一些小错误\
- 问题:
那么如何在 64 位上使用 32 位 C 数字(32 位如何工作)\
- 更易懂的解释:
我想在 64 位模式下使用 32 位(-m64,有一些方法 32 位 C 不能在 64 位 C 中工作)
关于此问题的最常见错误:
“从不同大小的整数转换为指针”
我真的需要帮助!\
“从不同大小的整数转换为指针”
哦不。仔细检查您的代码并删除指针和整数之间的所有转换,这些转换不会从 intptr_t
、uintptr_t
或 ptrdiff_t
转换或转换为 ptrdiff_t
。如果您在指针和 other-sized 整数之间进行转换,无论您使用多少层间接寻址,它都不会起作用。
完成后,出于 I/O 的原因,您仍然需要 certain-sized 个整数,请使用 stdint.h
:
中的定义
int16_t
: 有符号 16 位整数
uint16_t
: 无符号 16 位整数
int32_t
: 带符号的 32 位整数
uint32_t
: 无符号 32 位整数
int64_t
: 带符号的 64 位整数
uint64_t
: 无符号 64 位整数
保持 size_t
数组大小,不要在 on-disk 格式中使用它。它改变了。
我这里有一些 C 文件(你不需要知道里面有什么),它处于稳定的 32 位模式(使用 gcc -m32),现在我想做更多的 64 位(gcc -m64)它有一些小错误\
- 问题:
那么如何在 64 位上使用 32 位 C 数字(32 位如何工作)\ - 更易懂的解释:
我想在 64 位模式下使用 32 位(-m64,有一些方法 32 位 C 不能在 64 位 C 中工作)
关于此问题的最常见错误:
“从不同大小的整数转换为指针”
我真的需要帮助!\
“从不同大小的整数转换为指针”
哦不。仔细检查您的代码并删除指针和整数之间的所有转换,这些转换不会从 intptr_t
、uintptr_t
或 ptrdiff_t
转换或转换为 ptrdiff_t
。如果您在指针和 other-sized 整数之间进行转换,无论您使用多少层间接寻址,它都不会起作用。
完成后,出于 I/O 的原因,您仍然需要 certain-sized 个整数,请使用 stdint.h
:
int16_t
: 有符号 16 位整数
uint16_t
: 无符号 16 位整数
int32_t
: 带符号的 32 位整数
uint32_t
: 无符号 32 位整数
int64_t
: 带符号的 64 位整数
uint64_t
: 无符号 64 位整数
保持 size_t
数组大小,不要在 on-disk 格式中使用它。它改变了。