我遇到问题。当我编译我的项目时,我有sizof(long int) = 8
和sizof(int) = 4
。不过,我需要sizeof(long int)
也是4。有没有办法做到这一点? 问题是我有很多庞大的int数组,需要将它们赋给long int数组。如果我将所有数组转换(特别是表示转换数组的每个条目),会导致很多时间。如何强制长为4字节
2
A
回答
6
您不能强制LP64平台(或陌生人平台)上的内置long int
类型长度为4个字节。
但是,您可以使用<stdint.h>
中的类型来确保变量的确切大小。
对于您的情况,您需要将int32_t
或uint32_t
作为您的类型,具体取决于您是否需要/需要符号位。
0
您可能能够告诉编译器您所定位的平台或使用编译器特定的命令来告知编译器您的变量的大小。
另一种方法是使用宏和定义它根据你的平台上:
#if PLATFORM_USES_8_BYTE_LONG
#define MY_LONG_INT int32_t
#else
#define MY_LONG_INT long int
#endif
的首选方法是设置你的编译器的目标架构。许多编译器都有大量预定义的体系结构可供选择。
相关问题
- 1. 如何在任何拱门上强制长度为8字节的大小?
- 2. 将int写入字节,长度为4
- 3. Java将长转换为4字节
- 4. 如何强制的字节串
- 5. 十六进制为整数(4字节)
- 6. 如何将枚举强制转换为字节数组?
- 7. 强制字节顺序
- 8. 如何将int转换为4字节的十六进制
- 9. C++强制new []不分配4个字节
- 10. 将32位长分成4个字节
- 11. DER长度超过4个字节?
- 12. 0字符长度为4
- 13. 从Android的字节数4字节得到长
- 14. 如何复制二进制文件的字节为字节
- 15. 转换为C字节数组长长
- 16. 如何插入数字到4字节
- 17. 如何在java中将十六进制字符串更改为4字节?
- 18. 如何在Excel中强制使用4位数字?
- 19. 如何强制中文等亚洲语言的字符长度?
- 20. 将4字节十六进制转换为十进制值
- 21. 转换4字节十六进制字符串为整数
- 22. 为什么字符串的字节长度比长度长?
- 23. 强制去读Uvarint的多个字节
- 24. 如何为* .example.com强制https?
- 25. IE忽略八位字节流 - 如何强制下载?
- 26. 如何强制zlib解压超过X字节?
- 27. 如何强制yaml中的所有节点都是字符串
- 28. 如何在elisp中强制字节编译一个目录
- 29. 如何制作一个长度为4个字符的随机数 - Java
- 30. 茉莉如何强制长场长久不变?
http://stackoverflow.com/questions/4244311/gcc-width-of-long-int-on-different-architectures – NPE
从'long int'中删除所有'long',或者替换/重新定义'long int' 'int32_t' –
你有没有试过,或者你只是假设它会很慢?速度几乎肯定是内存带宽限制。 – MSalters