我有一些代码在 C++ 中有一个动态类系统,它有一个名为 GetClassName() 的成员,这是一个可以想象的相当无害的名称。然而,当包含在一个带有 Windows 标头的大型项目中时,一切都乱了套。显然,Windows 使用了 #define GetClassName(GetClassNameA 或 GetClassNameW),它搞砸了一切,我的虚拟调用树变得一团糟,让我在黑暗中愚蠢的编译器调试中浪费了一天,试图找出问题所在。
因此,除了我在诅咒微软为#define 使用如此可怕的容易冲突的名称(我的意思是应该诚实地为此开枪!)之外,我要求 3 个目的。
- GetClassName() 的另一个好名字是什么?
- 有没有办法解决这个问题,所以将来我的代码库的其他开发人员不会遭受类似的命运
- 当其他人遇到这种类似莫名其妙的错误时,为了后代