Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ИАР MSP430 не реагирует на отсутствие второго индекса при обращении к двухмерному массиву
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Dog Pawlowa
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Ладно, не реагирует, но и работает неправильно.
Отличие в одной команде, причем, мне больше нравится вариант, который не работает.
Что не так?
dxp
Цитата(Dog Pawlowa @ May 3 2008, 22:30) *
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Ладно, не реагирует, но и работает неправильно.
Отличие в одной команде, причем, мне больше нравится вариант, который не работает.
Что не так?

В С/C++ нет двумерных массивов. То, что объявляют как:

int A[N][M];

является ни чем иным, как массивом массивов целых. Таким образом, выражение A[i] является вполне валидным и возвращает указатель на массив интов. Хотя всего кода не представлено, думается, что проблема в этом.
Dog Pawlowa
Цитата(dxp @ May 3 2008, 19:02) *
В С/C++ нет двумерных массивов. То, что объявляют как:

int A[N][M];

является ни чем иным, как массивом массивов целых. Таким образом, выражение A[i] является вполне валидным и возвращает указатель на массив интов. Хотя всего кода не представлено, думается, что проблема в этом.

Из отсутствующего кода только объявление переменной. Это текст на двух языках (большинство сообщений одинаковы).

#define na0 "Down sensor levl"
...
const char * const backup_name[BackupQty][2]=
{na0, na0, na1, na1, na2, na2, na3, na3, na4, na4, ...}

Про массивы понял, ну а что делает компилятор - непонятно, нужно подробно разбираться. Может, профи в ассемблере MSP430 подскажут.
diper
"не реагирует" это что значит? компилятор не выдает ошибки? Он все правильно делает.
printf'у вообще пофигу что ему там подсунули в качестве параметров.
Код
#define na0 "Down sensor levl"
...
const char * const backup_name[BackupQty][2]=
{na0, na0, na1, na1, na2, na2, na3, na3, na4, na4, ...}
Это объявлен массив указателей и указатели проиницализированы на строки. Соотвтественно backup_name[x][y] это указатель на строку, а backup_name[x] это указатель на указатель на строку.
Второй вариант надо полагать не работает с printf, т.к. он ожидает что первый параметр это указатель на строку.
IAR, MSP430 и ассемблер здесь ни при чем.

ЗЫ:И еще есть подозрение что отключена оптимизация у компилятора.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.