2016-03-31 3 views
0

У меня есть эта функция в моей программе:недействителен преобразование Const символ без знака

unsigned char * stringXOR(const unsigned char * X, const unsigned char * Y, int len) 
{ 
    unsigned char * result = new unsigned char [1024]; 
    for(int i = 0; i < len; i++) 
    { 
     result[i] = X[i]^Y[i]; 
    } 
    result[len] = '\0'; 
    return result; 
} 

в основной():

unsigned char ot1[1024] = "ksjdhsjd"; 
unsigned char ot2[1024] = "jjjkjhyh"; 

unsigned char * computeKey; 
computeKey = stringXOR(ot1, ot2, strlen(ot1)); 

и я получаю сообщение об ошибке invalid conversion from ‘unsigned char*’ to ‘const char*’ [-fpermissive]|

, что это проблема здесь ? я не возвращаю какой-либо const, чтобы жаловаться?

+1

Всегда указывайте на строку, в которой произошла ошибка. – Downvoter

+0

Прочитайте, как указано значение 'strlen'. –

ответ

2

strlen ожидает const char *. Вы пытаетесь передать const unsigned char *. Это сообщение об ошибке.

+0

oh, поэтому я должен использовать его каждый раз, когда я использую strlen с чем-то еще, что const char * – lllook

+0

@lllook, * что-то еще, кроме 'const char *' * - вы не должны использовать 'strlen' для чего-либо иного, кроме' char * 'или' const char * '. –

2

Ошибка не в преобразовании в const, а о преобразовании указателя в unsigned char в указатель на (const) char *.

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