реклама на сайте
подробности

 
 
> Передать массив в функцию, Как??
Kir85
сообщение Oct 25 2009, 14:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 24-05-09
Из: Нижний Новгород
Пользователь №: 49 495



Здравствуйте. Есть такой код
Код
......


Вопрос. Как передать в функцию массив? делаю так...
Код
void paint(void logo){
  char    p;//Номер текущей страницы индикатора
  char    c;//Позиция по горизонтали выводимого байта
    for(p=0; p<4; p++) {//Цикл по всем 4-м страницам индикатора
        WriteCode(p|0xB8);//Установка текущей страницы для обоих кристаллов индикатора
        WriteCode(0x00);//Установка текущего адреса для записи данных в 0
        for(c=0; c<61; c++) {//Цикл вывода данных в левую половину индикатора
            WriteDataL(logo);//Вывод очередного байта в индикатор
        }
        for(c=61; c<122; c++) {//Цикл вывода данных в правую половину индикатора
            WriteDataR(logo);//Вывод очередного байта в индикатор
        }
    }
}

пишет что "Error[Pe526]: a parameter may not have void type G:\AVR_CODE\mega8\iar\MT-12232B\main.cpp 155
"
Причина редактирования: Удален графоманский исходник

Прикрепленные файлы
Прикрепленный файл  mt_12232b.rar ( 3.25 килобайт ) Кол-во скачиваний: 13
 


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kir85
сообщение Oct 26 2009, 06:12
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 24-05-09
Из: Нижний Новгород
Пользователь №: 49 495



Разобрался. Может кому то пригодится...
массив...
Код
__flash char Logo122_1[4][122]={...}

функция...
Код
void paint_1(__flash char logo[4][122]){
  char    p;//Номер текущей страницы индикатора
  char    c;//Позиция по горизонтали выводимого байта
    for(p=0; p<4; p++) {//Цикл по всем 4-м страницам индикатора
        WriteCode(p|0xB8);//Установка текущей страницы для обоих кристаллов индикатора
        WriteCode(0x00);//Установка текущего адреса для записи данных в 0
        for(c=0; c<61; c++) {//Цикл вывода данных в левую половину индикатора
            WriteDataL(logo[p][c]);//Вывод очередного байта в индикатор
        }
        for(c=61; c<122; c++) {//Цикл вывода данных в правую половину индикатора
            WriteDataR(logo[p][c]);//Вывод очередного байта в индикатор
        }
    }
}

вызов функции...
Код
paint_1(Logo122_1);


--------------------
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Oct 26 2009, 07:46
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



А так как вам советовали - через указатель - не лучше будет реализовать вашу функцию?
Попробуйте откомпилировать ваш вариант и тот что приведён ниже и сравнить как компилятор передаёт параметры в функцию.
Причина редактирования: Нарушение п.3.4 Правил форума.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 18:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016