Czy „const LPVOID” jest odpowiednikiem „void * const”?
A jeśli tak, to dlaczego niektóre nagłówki Win32 go używają?
Na przykład:
BOOL APIENTRY VerQueryValueA( const LPVOID pBlock,
LPSTR lpSubBlock,
LPVOID * lplpBuffer,
PUINT puLen
);
Nieco więcej szczegółów: jeśli API nigdy nie używa odwołań (lub innych konstruktów tylko w C ++), ale tylko wskaźniki i wartości, jaki jest sens posiadaniaconst LPVOID
vs.LPCVOID
.
Czy powinienem traktować każde miejsce, które widzęconst LPVOID
jako miejsce, w którym prawdziwe znaczenie maLPCVOID
? (a więc można bezpiecznie dodać obsadę)
Dalsze wyjaśnienie: wydaje się, żeconst LPVOID pBlock
był w tym przypadku błędem. SDK systemu Windows 2008 zastępuje goLPCVOID
wVerQueryValue
podpis. Wino zrobiło to jakiś czas temu.