c++ - 如何编写可转换代码,32 位/64 位?

标签 c++ optimization 32bit-64bit

一个特定于 C++ 的问题。所以我读了一个关于什么使程序成为 32 位/64 位的问题,它得到的答案是这样的(抱歉我找不到这个问题,几天前我看过它但我再也找不到它了:( ):只要你不做任何“指针假设”,你只需要重新编译它。所以我的问题是,什么是指针假设?据我了解,有 32 位指针和 64 位指针,所以我认为这与那个。请展示它们之间的代码差异。在编写代码时要记住的任何其他好习惯,这有助于它在 to 之间轻松转换,也欢迎 :) 请与他们分享示例

附言。我知道有这个帖子: How do you write code that is both 32 bit and 64 bit compatible? 但我认为对于像我这样的新程序员来说,这有点笼统,没有很好的例子。就像什么是 32 位存储单元等。有点想把它分解得更多一点(没有双关语 ^^ ) ds。

最佳答案

一般来说,这意味着您的程序行为永远不应该依赖于任何类型的 sizeof()(不具有某种精确的大小),无论是显式还是隐式(这包括可能的结构对齐)。

指针只是它们的一个子集,这可能也意味着您不应该尝试依赖能够在不相关的指针类型和/或整数之间进行转换,除非它们是专门为此制作的(例如 intptr_t )。

以同样的方式,你需要处理写入磁盘的事情,你也不应该依赖于例如大小。内置类型,到处都一样。

每当您必须(例如由于外部数据格式)使用明确大小的类型时,例如 uint32_t

关于c++ - 如何编写可转换代码,32 位/64 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15001615/

相关文章:

c++ - QWidget继承自自定义QWidget

android - C++Builder:如何在 Android 应用程序中显示重音?

sql-server - SQL Server查询执行计划在已使用的索引上显示错误 "actual row count"并且性能非常慢

python - 优化函数以对元组列表进行排序

c# - 32 位 C# 应用程序如何利用 64 位 DLL

ios - 使用 NSInteger 而不是 int 的好处?

c++ - 在文本文件中查找 10 个最大数量行,其中包含 shipment ID 、 UPC code 、 quantity

c++ - 访问 union 中相同类型的非事件成员

javascript - grunt-contrib-requirejs - 需要一点建议

c - 64位系统如何添加n个字节