В чем смысл следующего кода? - PullRequest
0 голосов
/ 16 декабря 2010

Может ли кто-нибудь сказать мне, что означает следующий код:

unsigned char  const *display_screen[] = {
    "\xfeXEPC Main Menu:\n\35System Status\n System Settings\n Access Control",    
    "\xfeXEPC Main Menu:\n System Status \n\35System Settings\n Access Control",
    "\xfeXEPC Main Menu:\n System Status \n System Settings\n\35Access Control",
    "\xfeXEPC Main Menu:\n\35Configuration\n Op.Programming\n Event Log  ",
    "\xfeXEPC Main Menu:\n Configuration\n\35Op.Programming\n Event Log  ",
    "\xfeXEPC Main Menu:\n Configuration\n Op.Programming\n\35Event Log  ",
    "\xfeXEPC Main Menu:\n\35History    ",
    "\xfeXEPC Main Menu:\n"};

Спасибо.

Ответы [ 2 ]

3 голосов
/ 16 декабря 2010

Код недействителен. Строковые литералы имеют тип char[N] (где N - длина каждого строкового литерала). Они неявно конвертируются в char*, но не в unsigned char*. Поскольку код недействителен, он не имеет никакого значения. : -)

Если бы display_screen было const char*[] вместо const unsigned char*[], это объявило бы display_screen как массив const char* с указателями в массиве, указывающими на строковые литералы, перечисленные в инициализаторе. *

0 голосов
/ 16 декабря 2010

Помимо проблемы подписи, о которой упоминает Джеймс, это определяет массив строк."\xfe" в начале переводится в шестнадцатеричное значение 0xfe, а "\35" переводится в восьмеричное 035.Интерпретация этих значений зависит от вашей платформы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...