c - 在 C 中始终强制转换变量是一个好习惯吗?

标签 c winapi coding-style casting

我正在编写一些 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/

相关文章:

c - 如果无效,如何拒绝用户输入并让他再次输入

在没有 malloc 的情况下创建可变大小的数组

c - 如何修复 "undefined reference to createList"

使用 Http Post 的 C Wininet 文件上传

c - 开放管道上 CloseHandle 上的 sigsegv

php - 在没有 else 条件的情况下结束 if...else 语句的最佳实践

c - OpenCV 使用带有灰度图像的 cvImageCreate() 失败,并且调整大小通常失败

c++ - IFileDialog覆盖文件并打开文件夹/文件

c++ - 带有返回值的 if 语句代码样式

php - 试图避免 "spaghetti code",为什么多个 if-else 不好?