C++,用于检查软件是否在32位或64位系统上运行的功能

Dav*_*.it 0 c++ 32-bit visual-studio-2008 32bit-64bit

正如我在许多问题中解释的那样,我正在尝试将软件从32位系统转移到64位系统.我对malloc()函数一些问题,但现在我通过更正参数来解决它.

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

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

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

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

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

if(isIt64system())然后[64位代码]

[32位代码]

这个函数是否存在于C++中?是否有任何功能告诉我软件是在32位系统还是64位系统上运行?

Rob*_*obᵩ 5

不要编写两个与大小相关的分支,而只需编写一个正确的可移植代码路径.在你的情况下:

(int**)malloc(count*sizeof(int*));
Run Code Online (Sandbox Code Playgroud)

无论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));
Run Code Online (Sandbox Code Playgroud)

希望你能看到代码是多么荒谬,以及如何用一个构造良好的malloc调用代替它.