const char C/C++
Раньше такой код работал
Код:
const char crypt[] = {0x14, 0x67, 0x85, 0x14, 0x87, 0x11,0x45};
После использования gnu++0x/c++0x не работает, выдает такое:
Код:
main.cpp:9:64: error: narrowing conversion of '133' from 'int' to 'const char' i
nside { }
main.cpp:9:64: error: narrowing conversion of '135' from 'int' to 'const char' i
nside { }
nside { }
main.cpp:9:64: error: narrowing conversion of '135' from 'int' to 'const char' i
nside { }
Думаю, что числа 0x14, 0x67 и т.д. по умолчанию воспринимаются компилятором как int. Как вы знаете, char уже, чем int, поэтому компилятор и пишет про "narrowing conversion" - суживающее преобразование. Попробуйте вручную привести элементы массива к типу char .
Сделал так:
Код:
const char crypter[] = {char(0x14), char(0x67), char(0x85), char(0x14), char(0x87), char(0x11),char(0x45)};
Все работает!
const unsigned char crypt[] = {0x14, 0x67, 0x85, 0x14, 0x87, 0x11, 0x45};