为什么下面的代码会被编译?C++为什么const LPSTR与const char *不同?
void foo(const LPSTR str) {
str[0] = '\0';
}
而
void foo(LPCSTR str) {
str[0] = '\0';
}
和
void foo(const char* str) {
str[0] = '\0';
}
没有。
它实际上LPTSTR
在我的代码,以便const
版本LPCTSTR
... 所以我可以通过具有类似const LPTSTR
提高代码的可读性,也必须是LPCTSTR
或const TCHAR*
?
我强烈建议,如果这不是某些Win32 API特定的代码,那么在代码中不要使用Microsoft typedefs,而应使用真实类型(适用于本示例)或自己制作更明智的typedef。 – rubenvb
这是特定于win32,但谢谢你的提示。 – sooqua
但是Win32的具体问题是什么?如果不是,你仍然应该抽象出这些类型的别名。事实上,如果你只是简单地这样做,你会立即看到问题所在。 –