爲什麼下面的代碼會被編譯?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的具體問題是什麼?如果不是,你仍然應該抽象出這些類型的別名。事實上,如果你只是簡單地這樣做,你會立即看到問題所在。 –