Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 23.08.2012, 21:47  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от Yurkin2007 Посмотреть сообщение
к тому же они не ответили на вопрос ТС о неработающей программе и увели дискуссию в сторону...
Ответ уже дан в #827,
напомню сообщение об ошибке компилятора.
Сообщение от papa_n Посмотреть сообщение
Error: D:\Project_CV_encode\main.c(81): incomplete type is not allowed
А ошибались Вы тут:
Сообщение от Yurkin2007 Посмотреть сообщение
И хорошо бы придумывать разные имена для формальных параметров и действительных переменных. А то у Вас всё data и data ...
Давать такие имена можно, ошибка была не в этом.
Ну, еще и этот совет абсолютно бессмысленный:
Сообщение от Yurkin2007 Посмотреть сообщение
Нужно передавать ссылку на массив
Код:
char EncodeData(char data[])
Реклама:

Последний раз редактировалось nonamedov; 23.08.2012 в 21:54.
nonamedov вне форума  
Сказали "Спасибо" nonamedov
dosikus (23.08.2012)
Непрочитано 23.08.2012, 21:53  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от Yurkin2007 Посмотреть сообщение
ТС объявил массив data, ... и определяет его длину как
Код:
len=sizeof(data);
прекрасно представляя себе, что размер элемента равен 1 байту.
На самом деле, ТС написал так:
Код:
char EncodeData(char *data)
{
len=sizeof(data)/3;

    for(i=0; i‹len; i++)
    {
        a0 = data[i*3];
        ...
    }
    return *sms;
}
то есть, ни о каком "прекрасно представляя себе" даже речи не шло, хоть и не всем это очевидно.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Сказали "Спасибо" tempora
dosikus (23.08.2012)
Непрочитано 23.08.2012, 22:49  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Не, ну, вдвоем на одного навалились. И примкнувший к ним супермодератор.
Ладно, согласен. Впредь при определении размера массива буду писать: len=sizeof(arr)/sizeof(arr[0])
Yurkin2007 вне форума  
Непрочитано 23.08.2012, 23:13  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Есть и другое объяснение - тебе "кривые кирпичи подсунули".
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 24.08.2012, 09:08  
kosmos440o
Заблокирован
 
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
kosmos440o на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Если исходные данные для массива - строка, то можно использовать strlen, или преобразовать массив в строку
kosmos440o вне форума  
Непрочитано 24.08.2012, 12:18  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Я сейчас вам подолью масла в огонь....
Парни ну почему нельзя просто написать...
Оператор sizeof применять в функции (при таком определении) нельзя, потому что передача массива в функцию методом указателя будет передавть адрес в sizeof - таким образом мы будем получать размер адреса (например, два байта, все зависит от области памяти МК). И Yurkin2007 об этом уже писал (пост 815).
Я неспроста писал что нужно глобальное обращение к массиву (по его конкретному имени) если применять sizeof в функции. Но при этом теряется смысл функции в таком виде как ее видит вопрошающий.
Если массивов несколько, то sizeof нужно применять перед вызовом функции, а сам sizeof из нее убрать... Например такое обращение
DL = EncodeData (sizeof data);, а в функции len=data/3; (если параметр определен как char data).
Надеюсь доходчиво...
Три страницы флуда....
Миниатюры:
Нажмите на изображение для увеличения
Название: mmm.jpg
Просмотров: 43
Размер:	252.4 Кб
ID:	38029  

Последний раз редактировалось mimuh64; 24.08.2012 в 13:15.
mimuh64 вне форума  
Непрочитано 24.08.2012, 13:52  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от mimuh64 Посмотреть сообщение
Парни ну почему нельзя просто написать...
Сейчас попробую проиллюстрировать, почему этого не вышло.

Сообщение от mimuh64 Посмотреть сообщение
Я взял кусок твоего примера - компилируется и работает...
Не работает - никак! О чем я и написал, а спустя страницу в этом убедился и ТС.

Сообщение от Yurkin2007 Посмотреть сообщение
У Вас параметр data есть указатель на char, а совсем не массив. ... Нужно передавать ссылку на массив
Код:
char EncodeData(char data[])
...
Тоже "дельный совет" - поставить вместо ссылки на char, ссылку на char, записанную "другими словами".

Сообщение от mimuh64 Посмотреть сообщение
И Yurkin2007 об этом уже писал (пост 815).
Качество того "совета" уже обсудили и пришли к неутешительному выводу - очень хочется пойти по второму кругу?

Сообщение от mimuh64 Посмотреть сообщение
Надеюсь доходчиво...
Это нетрудно проверить:
Сообщение от mimuh64 Посмотреть сообщение
Оператор sizeof применять в функции (при таком определении) нельзя
Применять sizeof в функции - можно; можно где угодно, если знать что он возвращает. Обсуждавшаяся беда заключалась в том, что sizeof неверно использовали для получения размерности массива (и в, и вне функции).
Сообщение от mimuh64 Посмотреть сообщение
передача массива в функцию методом указателя
Это что за метод такой, "метод указателя"? Попробуем предположить, что имелась ввиду передача по ссылке.
Сообщение от mimuh64 Посмотреть сообщение
таким образом мы будем получать размер адреса
Размер адреса таким образом не получить. Вероятно, имелся ввиду размер указателя?
Сообщение от mimuh64 Посмотреть сообщение
Я неспроста писал что нужно глобальное обращение к массиву ... Но при этом теряется смысл ...
Советы, приводящие к потере смысла - бессмысленны. От них лучше воздерживаться.
Суммируем - ни одна мысль не выражена правильно, но в целом да - очень доходчиво.

Сообщение от mimuh64 Посмотреть сообщение
Три страницы флуда....
Именно! И все вашими молитвами - один уверяет, что "всё работает", когда нифига не работает, другой даёт совет заменить указатель на... указатель же(!), дескать, "вот тогда будет щастье", первый тут же подхватывает и предлагает объявить массив глобально, чтобы вообще не передавать его параметром ("нет параметра - нет проблемы"), оба дают советы по использованию sizeof, которые, в силу смутности понимания, перестают работать при малейшем "шаг влево, шаг вправо" и так далее. И вот теперь - этот последний пост #836, пытающийся представить чёрное белым; и всё это - вместо того, чтобы просто взять из #810 название раздела и переписать свой код согласно тому, что там написано. Вы классно потратили время! Поздравляю!
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 24.08.2012, 14:12  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Да.... Вы мастер флудить. По поводу работает или не работает, внимательно посмотрите первичный вопрос, в том ключе - мой пример (первый) работает (или Вы картинку не видите?). По поводу применения sizeof в функции - это уже другой пример (автор расширил свой вопрос). Но от Вас я так его (пример) и не увидел.
"Советы, приводящие к потере смысла - бессмысленны." - да Вы философ (или любитель наслаждаться своим литературным изысканием), не лучше ли просто написать пример и показать автору ошибки, чем упражняться в написании памфлетов...
Класно потратили время Вы, и я Вас поздравляю!!!

Последний раз редактировалось mimuh64; 24.08.2012 в 15:40. Причина: Мистер tempora любит обращение на Вы (Извиняюсь...)
mimuh64 вне форума  
Непрочитано 24.08.2012, 14:18  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от mimuh64 Посмотреть сообщение
не лучше ли просто написать пример и показать автору ошибки,
Медвежья услуга .
Надо не готовое подсовывать а думать учить ...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 24.08.2012, 14:25  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от dosikus Посмотреть сообщение
Медвежья услуга .
Надо не готовое подсовывать а думать учить ...
Воистину... полностью согласен. Но вопрашающий показал свое творение, ни грех и поправить реальным примером.
mimuh64 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видео уроки dosikus Микроконтроллеры, АЦП, память и т.д 61 23.01.2012 21:06
Видео уроки (flash) Proteus 7.1 fmssp Proteus 5 13.08.2007 03:56
AVR уроки Рюмика chipic128 Proteus, KiCAD и другие ECAD 9 07.03.2007 21:46
уроки от LABCENTRE(PIC12F675+C) dosikus Микроконтроллеры, АЦП, память и т.д 22 09.10.2006 10:16


Часовой пояс GMT +4, время: 14:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot