取消定义一个已定义的头文件
visual Undefine a defined header file / C++
是否可以从另一个头文件中取消定义已经定义的头文件?
我正在处理不同的类,我需要取消定义一个特定的类,以便将私有部分更改为公共部分。
我知道将私有类更改为公共类是不常见的,但它确实可以帮助我。
#undef "player.h"
#define private public
#include "player.h"
#undef private
首先,您无法使用预处理器技术从提交给编译器的代码中删除语句。
其次,c++不允许将#define
private
作为public
。c++ 11 17.6.4.3.1宏名称[Macro .names]
翻译单元不能在词法上使用#define或#undef names与关键字相同。
所以不要这样做。
在这种情况下你唯一能做的就是重新输入类
类一旦定义,就没有办法重新定义了。如果您尝试这样做,您将得到以下一行的错误消息
error: redefinition of 'class player' class player { ^
甚至之前将private
重新定义为public
,例如
#define private public
#include "player.h"
#undef private
是危险的,并且违反了这个类的契约。
你应该考虑为什么这个看起来是必要的,如果可能的话重构这个类。
相关文章:
- 告诉CMake链接到自定义文件夹中的Boost
- 通过cMake使用具有自定义文件扩展名的共享库
- 威纳派读取自定义文件或文件夹的所有访问权限
- 使用命令列表解析自定义文件
- 单独的类声明和方法定义文件问题
- Qt解析自定义文件格式
- 将单独的头文件和类定义文件链接到主函数文件 - G++ 返回重载"undefined reference to"构造函数
- FAT32和NTF中的自定义文件属性
- 如何在没有"fatal error: Wt/WApplication: No such file or directory"的情况下将wt安装到自定义文件夹中
- C++ while 循环在自定义文件结构中
- QT C 读取自定义文件结构
- gcc 是否有编译指示来定义文件类型/编译器
- C/C++ 中的跨平台自定义文件头
- 使用头文件和类定义文件时未解决的外部符号错误
- 将此c++代码分解为单独的类规范文件和函数定义文件
- 自定义文件类中fstream对象的生存期
- 如何使用BinaryReader类使用C#读取自定义文件(C++)
- 提供带有libjpeg的自定义文件IO
- C++模块定义文件头内联符号
- 错误:未定义文件中的第一个引用符号