Если lpMsgBuf уже является указателем на T-строку и если API ожидает, что указатель будет указывать непосредственно на T-строку, вам не следует использовать приведение вообще. Другими словами, если тип данных уже правильный, лучше не использовать ненужные преобразования. Причина в том, что чрезмерное использование приведений может скрыть от вас ошибки, в то время как приведение приводит к закрытию компилятора.
Если lpMsgBuf уже является указателем на T-строку и если API ожидает указатель на указатель на T-строку, но API ожидает, что этот указатель на указатель будет преобразован в указатель типа на T-строку (и API будет преобразовывать его назад при использовании), значит, вы все делаете правильно.
Если lpMsgBuf является указателем на что-то еще (правильного типа) и API ожидает указатель на указатель на ваш тип, но API ожидает эти игры с кастомами, значит, вы делаете это правильно.
Если lpMsgBuf является указателем на T-строку и если API ожидает указатель на T-строку, то при использовании оператора & вы создаете указатель на указатель на T-строку, которую API не ожидает, и используя приведение, вы говорите компилятору превратить этот указатель на указатель в указатель типа на T-строку, даже если значение по-прежнему указывает на указатель. Итак, вы успешно закрыли компилятор, но по-прежнему доставляете мусор вам или вашим клиентам.
Таким образом, без дополнительных сведений о том, какая страница MSDN сообщает вам создать указатель на указатель и играть в кастинговые игры для какого API, мы не можем угадать, правильно ли вы это делаете, или неправильно читаете MSDN, или MSDN сообщает писать плохой код.
Теперь, если приведение действительно правильное, то выбор используемого синтаксиса зависит от вашего стиля в остальной части вашей программы.
person
Windows programmer
schedule
27.04.2009