我正在编写一些 C 代码并使用 Windows API。我想知道强制转换明显相同但名称不同的类型是否是一种好的做法?例如,当将 TCHAR *
传递给 strcmp()
时,它需要一个 const char *
。假设我想编写严格且在各方面都正确的 C,strcmp((const char *)my_tchar_string, "foo")
,我应该这样做吗?
最佳答案
不要。但也不要使用 strcmp()
而是使用 _tcscmp()
(甚至是安全的替代方案)。
_tcs*
表示一整套 C 运行时(字符串)函数,其行为正确取决于预处理器如何翻译 TCHAR
。
关于安全替代方案,请查找带有尾随 _s
的函数,或者以 C 运行时中的经典字符串函数命名的函数。还有另一组函数返回 HRESULT
,但它与 C 运行时不兼容。
关于c - 在 C 中始终强制转换变量是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216714/