2010-08-12 2 views
4

В настоящее время я пытаюсь позвонить по телефону this вызов функции. Вот заявление:Объявление const BYTE * в C++

const void* WINAPI CertCreateContext(
    __in  DWORD dwContextType, 
    __in  DWORD dwEncodingType, 
    __in  const BYTE *pbEncoded, 
    __in  DWORD cbEncoded, 
    __in  DWORD dwFlags, 
    __in_opt PCERT_CREATE_CONTEXT_PARA pCreatePara 
); 

Как вы можете видеть, третий вход пары требуют константного BYTE *, который представляет собой закодированный сертификат, который вы пытаетесь создать. Как определить такую ​​переменную в C++?

ответ

8

Вам не нужно. Параметр функции является указателем на константу BYTE, что означает, что функция не изменит байт, на который указывает. Простой пример:

void f(const BYTE * p) { 
    // stuff 
} 

BYTE b = 42; 
BYTE a[] = { 1, 2, 3 }; 

f(& b); 
f(a); 

Вы, конечно, нужно #include заголовка, объявляющий типа BYTE.

+0

И нижняя сторона была из-за чего? – 2010-08-12 20:01:34

+0

@Neil: Даун-голоса на простых ответах являются самыми непонятными. – GManNickG

+0

@GMan Я знаю, вот почему они единственные, о которых я прошу, в безнадежной надежде, что нисходящий может объяснить себя. – 2010-08-12 20:20:49

0

Вы должны только объявить BYTE*, компилятор будет автоматически отличать не const s до const s.

0

Согласно documentation:

pbEncoded представляет собой указатель на буфер, который содержит существующий кодированное содержимое контекста для копирования.

0

Проложить регулярный указатель на BYTE. const указывает, что объект с заостренными объектами не будет изменен внутри функции.

+0

Спасибо, что поймали это, Нейл. Я хотел сказать, что * объект, указывающий на *, не будет изменен. Сам указатель, конечно, не может быть изменен при передаче по значению 'const' или иным образом. Исправлена – bta

Смежные вопросы