c++ - 我可以“隐藏”在 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#define
#pragma once
#define Bitboard uint64_t
extern Bitboard a;
void foo(Bitboard);
...
#undef Bitboard
推荐阅读
- html - 卡在 css 图片库编码中
- sql-server - 向 SQL Server 中的现有表添加主键列?
- paypal - 如何创建一个链接,然后是另一个?
- python - 流式传输和保存 tweepy 数据
- button - swiftUI - TabBar 中的按钮相机
- python - 如何将 ctypes C 指针转换为 Numpy 数组?
- python - 合并 csv 文件时添加文件名作为标题
- html - 如何在 react-styleguidist 中包含 Material Icons
- javascript - 如何修复 301 重定向?
- reactjs - 使用 TypeScript 在 React 中从 GraphQL 查询访问嵌套数据时出现问题