【发布时间】:2017-04-18 13:38:02
【问题描述】:
我正在使用 DirectX 12 API 用 C++ 编写视频游戏引擎。通过这样做,我发现了数据类型 __int64,它显然是 Microsoft 特定大小的类型。于是我想到了两个问题:
假设选择了正确的大小,大小 int(如“int[size]_t”)通常比标准 int 更有效吗?
与
“int[size]_t”、“__int[size]”和“int[size]”中的哪种数据类型我应该在考虑不同计算机系统之间的效率和兼容性的情况下使用吗?
【问题讨论】:
-
在 MS 编译器上
__int64与long long和std::int64_t完全相同。它只是在后者被添加到标准之前存在的一个名称。 -
很抱歉重复发布。感谢您的快速回复
-
@BoPersson 相反,这是 MS 提出的一个名称,因为他们从 1999 年直到最近才遵循之前的 C 标准。
-
MS Visual C++ 早在 VS 2010 中就开始实现现在所谓的 C++11,其中包括
stdint.h和cstdint.h。 MS Visual C++ 已明确声明“C99”支持不是目标,但由于最终的 C++11 标准规定 C++11 必须包含 C99 标准库,因此这些是 VS 2013 和更高版本库实现的一部分。同样,MS Visual C++ 还不支持 C11 标准库,但预计这将成为 C++17 标准的一部分。尽管委员会试图让 C 和 C++ 保持密切联系,但它仍然与所有 C99/C11 语言特性不同。 -
基于这个问题,我猜你可能是 C++ 和/或 DirectX 的新手。请记住,DirectX 12 是一种专家图形 API,它假定您已经是使用 DirectX 11 的大师。如果您不是,您应该考虑改用 DirectX 11。请参阅DirectX Tool Kit tutorials。
标签: c++ types directx-12