我在Windows 8 x64上使用Visual Studio 2013 Ultimate,我正在从头开发游戏(一个引擎,如果你愿意的话)。我考虑到了多平台,包括移动设备,而且我通过stackoverflow阅读,ILP
,LP
,LLP
可能是一个问题。
我看到像int,long等类型非常松散地依赖于编译器,机器以及谁知道什么是其他的,而且一个字节不完全是8位加上微软有自己的额外类型 - 这些都是如此令人生畏 - 我问你是谁知道更好,伸出援助之手。
目前我倾向于int8_t
,int16_t
等,因为他们看起来最符合这些想法:
保证我的类型在运行时不会在某些平台上溢出,甚至移动。例如:int x
可以保持值100000(int在16位上最大65535)。
向我保证我正在使用最小尺寸的类型,不仅因为内存是一种宝贵的资源,而且首先是因为较大类型的操作较慢。否则我会使用128位类型(我不确定它是否存在于C ++中),因为我需要相对较好的几何精度,但我仍然不会为一些高度专业化的数学库的精度交换速度。 / p>
因此,我不需要那么多的控制,因为我需要了解类型大小,明智地使用我可以得到的所有空间和时间,因为游戏本质上是资源要求加上我正在使用大型数据结构(数千个元素)用于渲染。
但是intn_t
可能是错误的方法,因为它是固定的,不适应单个平台,其CPU针对不同大小的内存块进行了优化。
在我的案例中,最合适的方法是什么?
什么时候建议使用intn_t
,何时建议不要使用?
答案 0 :(得分:0)
我建议你使用固定大小的整数,这样可以防止溢出。如果在某些平台上不可用,编译器会抱怨(并且编译错误比运行时错误好得多)。
答案 1 :(得分:0)
如果您只是针对一个平台,并且您不打算与任何内容互操作,那么我不会担心事情。
但是,如果您希望您的代码在各种平台(OSX,Linux,Windows)上进行编译,那么我将使用cstdint
中定义的类型。此外,如果您计划与具有明确定义的大小的其他语言(例如,int
在Java / C#中为32位)进行互操作,那么我会使用类似{{1}的类型因为你的代码是可移植的,而且你所做的事情更明确。