我不确定这里的词汇,但希望我能让人理解。
当我使用不太扎实的 C++ 知识来研究 winapi 时,我发现了很多 typedef 的东西,对我来说,这些东西似乎使问题变得过于复杂,并添加了我必须记住的另一件事。
例如,UINT
代替unsigned int
, HBITMAP
事实证明这只是一个HANDLE
,还有很多其他的。
我的问题是,我是否可以/应该在可能的情况下替换该类型的更通用版本,并在需要时将其强制转换(以及,这叫什么)?
例如,我想写
这对新人来说是好事,但总体来说是不好的做法,还是什么?
1)Win32 API实际上是C,而不是C++。
如果您考虑 MFC 或 ATL 之类的东西,那么这种区别就变得更加重要,它们都是“面向对象”的、仅限 C++ 的 API。幸运的是,这两者都正在变得(已经变得?)过时。
2)微软喜欢使用大量的宏和typedef。我不能说这是“好”还是“坏”。这只是生活的一个事实。如果您使用 Windows 无论时间长短,它都会成为您的第二天性。
3) 最重要的是 - 是的:当您使用 Microsoft API 时,您绝对应该遵循 Microsoft 约定。当 MSDN 页面显示“HANDLE”时使用“HANDLE”是一件好事。类似的建议也适用于“LPxxx”、“TRUE”、“FALSE”、“INVALID_HANDLE”、“HRESULT”等。如果 MSDN 中是这么说的,那么您应该使用它。
它不仅会让你的代码更具可读性......而且,令人惊讶的是,它还可以prevent您可能会因“再次猜测”“真实类型”而导致细微的错误。
Do not尝试“再次猜测”类型。这只是一个坏主意。
遵循标准约定将使生活更轻松、更安全、更可靠、更便携。
IMHO...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)