相关疑难解决方法(0)

printof with sizeof on 32 vs 64 platform:如何以独立于平台的方式处理格式代码?

我有一些代码打印程序使用的内存量.该行类似于:

printf("The about of RAM used is %u", anIntVariable*sizeof(double) );
Run Code Online (Sandbox Code Playgroud)

其中anIntVariable是double数组元素数的int变量.无论如何,在32位系统上我从来没有遇到任何问题,但在64位系统上,我得到一个编译器警告关于使用"%u"作为无符号长整数.使用"%lu"作为格式代码可以解决64位问题,但会导致编译器抱怨32位,因为类型返回unsigned int.我发现,确实,sizeof(double)在32位与64位系统上返回不同的值.我找到了一些网页指南,用于代码从32位转换为64位但是我宁愿让代码同时适用于两者而不仅仅是来回转换.

如何以独立于平台的方式编写此行?我知道很多方法可以使用预处理器指令来实现它,但这似乎是一个黑客攻击.当然有一种我没有意识到的优雅方式.

c 32bit-64bit

29
推荐指数
3
解决办法
1万
查看次数

标签 统计

32bit-64bit ×1

c ×1