«Const LPVOID» эквивалентен «void * const»?
И если так, то почему некоторые заголовки Win32 используют его?
Например:
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
подпись. Вино сделало это довольно давно.