gpt4 book ai didi

c++ - Windows API 和 GetClassName()?另一个名字?

转载 作者:可可西里 更新时间:2023-11-01 14:41:06 25 4
gpt4 key购买 nike

我有一些代码在 C++ 中有一个动态类系统,它有一个名为 GetClassName() 的成员,人们可以想象这是一个相当无害的名字。然而,当包含在带有 Windows header 的大型项目中时,一切都变得一团糟。显然 Windows 使用 #define GetClassName(GetClassNameA 或 GetClassNameW)搞砸了一切,我的虚拟调用树变得一团糟,让我在黑暗中愚蠢的编译器调试中浪费了一天时间,试图找出问题所在。

因此,除了我要诅咒微软为 #define 使用如此容易引起冲突的名字这一点之外(我的意思是说老实说有人应该为此被 Gunicorn !)我要求有 3 个目的。

  1. 还有什么好听的名字获取类名()?
  2. 有没有办法解决这个问题,所以在未来,其他我的代码库的开发人员不会遭遇同样的命运
  3. 并且为了后人当别人同样遇到这个无法解释的错误

最佳答案

  1. ClassGetName()
  2. #undef GetClassName
  3. WinAPI 是一种 C API。没有命名空间。其他一些平台试图通过为所有符号名称添加前缀来缓解这种情况,但最终也会分崩离析。最佳选择:如果您正在编写不依赖于 Windows 平台 SDK header 的代码,则不要#include它们

关于c++ - Windows API 和 GetClassName()?另一个名字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/580263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com