c++ - 我可以在C++头文件中 “hide”定义吗

标签 c++ linker header-files

假设我有一个头文件test.h

#pragma once

extern uint64_t a;

void foo( uint64_t );
在我的情况下,uint64_t用于表示Bitboard,这是我的象棋引擎的一部分test.h自然,我将在所有地方都使用uint64_t。我想为uint64_t创建类型别名,即Bitboard
所以我做了
using uint64_t = Bitboard;
但是由于这是一个头文件,现在Bitboard到处都定义了,因为该头文件几乎被项目的所有其他文件使用。
问题是我只想在test.h中使用此别名。
问题
该项目并不小,而且Bitboard并不是一个非常独特的标识符,我觉得像这样的全局别名会引起一些冲突,因此我想严格将其保留在test.h中。
有什么办法可以让我仍然在头文件中使用创建的东西,而不会泄漏到项目的所有其他文件中?

最佳答案

最好的办法是使用丑陋的C #define

#pragma once

#define Bitboard uint64_t

extern Bitboard a;
void foo(Bitboard);

...

#undef Bitboard

关于c++ - 我可以在C++头文件中 “hide”定义吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64639837/

相关文章:

c++ - 如何很好地将 "cast"qint64 转换为 QProgressBar 的 int

c++ - 为什么要有 const 和非常量访问器?

c++ - 库的某些非内联方法错误 "undefined reference to"

c++ - 在 C++ 中相互使用的两种类型

c++ - header 与 C++ 中的实现不同

c -/usr/include 和/include 之间的区别

c++ - 为什么长整数在某些系统上占用超过 4 个字节?

c++ - 对于相对较新的计算机,有什么替代OL'C++ Beep()的好方法?

memory - 试图了解 ARM 二进制镜像中的加载内存地址 (LMA) 和二进制文件偏移量

c - 使用 armcc 与前面的对象相反的字节顺序