【发布时间】:2017-06-21 06:04:24
【问题描述】:
作为参考,我在 C++11 中编译。
我开始使用棋盘的位图表示作为以棋子为中心的方法来编写国际象棋引擎。似乎要使用的合适类型是 uint64_t ,但是,在网上搜索了很多之后,我有点不确定这里的“最佳实践”。
我开始为游戏板定义 .hpp 文件。 首先,我对不同代码似乎表现出的相似行为感到困惑。
#include <cstdint>
uint64_t board;
和
#include <cstdint>
std::uint64_t board;
两者都编译得很好。两者有什么区别?这个比那个好吗?
此外,我注意到我什至不需要包含 cstdint 就可以使用 uint64_t :
#include <iostream>
uint64_t board;
和
#include <iostream>
uint64_t std::board;
两者都编译得很好,就像上面的 2 个 cstdint 示例一样。因此,我很困惑 uint64_t 应该如何在 C++11 中使用,以及为什么所有这 4 个示例都做完全相同的事情。有人告诉我你想使用 cstdint ,但似乎 iostream 也提供了类型 def ?是否有“最佳/最安全”的特定方式(例如在命名空间冲突方面)?
【问题讨论】: