如果是這樣,爲什麼一些Win32頭文件使用它?「const LPVOID」是否等同於「void * const」?
例如:
BOOL APIENTRY VerQueryValueA(const LPVOID pBlock,
LPSTR lpSubBlock,
LPVOID * lplpBuffer,
PUINT puLen
);
多一點的闡述:如果API從不使用引用(或任何其他C++ - 只建),但只有指針和價值觀,什麼是具有const LPVOID
與LPCVOID
點。
我是否應該把每個地方看作const LPVOID
作爲一些地方的真正意義是LPCVOID
? (因此可以安全地添加演員表)
進一步說明:看起來const LPVOID pBlock
在這種情況下確實是一個錯誤。 Windows 2008 SDK將其替換爲LPCVOID
中的VerQueryValue
簽名。葡萄酒在很久以前就這樣做了。
我聽說他們'定義'這些東西,所以它寧可是'const void *'。如果它們是typedef,那麼確實會是'void * const'。 – 2009-11-27 12:26:27
@litb:不幸的是這些都是typedefs – EFraim 2009-11-27 12:28:22
@EFraim啊,我明白了。被詛咒的大寫:) – 2009-11-27 12:35:24