首页 > 解决方案 > 我可以“隐藏”在 C++ 的头文件中定义的任何内容吗

问题描述

假设我有一个头文件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++linkerheader-files

解决方案


你能做的最好的就是使用丑陋的C#define

#pragma once

#define Bitboard uint64_t

extern Bitboard a;
void foo(Bitboard);

...

#undef Bitboard


推荐阅读