gpt4 book ai didi

C++,检查软件是否在 32 位或 64 位系统上运行的函数

转载 作者:太空宇宙 更新时间:2023-11-04 15:49:58 25 4
gpt4 key购买 nike

正如我在许多问题中所解释的,我正在尝试将软件从 32 位系统转移到 64 位系统。我有 some problem with malloc() function , 但现在我通过更正一个参数解决了它。

在我的那部分代码中,如果我在 32 位系统上运行,我可以使用:

(int**) malloc (const * sizeof(int))

但是,在 64 位系统上,我必须使用:

(int**) malloc (const * sizeof(int64_t))

我想用 if() 条件来管理这些十字路口,所以我需要一个以这种方式运行的 boolean isIt64system() 函数:

if(isIt64system()) then [64-bit code]

else [32-bit code]

C++ 中有这个函数吗?有什么函数可以告诉我软件是在 32 位系统还是 64 位系统上运行?

最佳答案

与其编写两个大小相关的分支,不如编写一个正确的、可移植的代码路径。在你的情况下:

(int**)malloc(count*sizeof(int*));

无论您系统上 int* 的大小如何,这都会正常工作。


后记:从这个问题的字面答案可以看出,最好不要使用 if:

if(sizeof(int*) == sizeof(int))
x = (int**)malloc(count*sizeof(int));
else if (sizeof(int*) == sizeof(int64_t))
x = (int**)malloc(count*sizeof(int64_t));

希望您能看到该代码是多么荒谬的冗余,以及它应该如何被一个构造良好的 malloc 调用所取代。

关于C++,检查软件是否在 32 位或 64 位系统上运行的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com