Помощь в WinAvr
15.10.2013, 15:46
|
|
|
Прописка
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Помощь в WinAvr
Доброго всем времени суток, объясните в чём дело
void slojim_str(char* sdc){
fg=sizeof(sdc);
...................
..................
................}
slojim_str(read_SMS);
При таком построении кода функция sizeof выдаёт неправельный результат,
и как это исправить?
|
|
|
|
15.10.2013, 19:12
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Помощь в WinAvr
Сообщение от AGAT0365
|
|
функция sizeof выдаёт неправельный результат
|
Этого не может быть, результат наверняка правильный, а вот ожидания - наверняка ошибочные.
Сообщение от AGAT0365
|
|
и как это исправить?
|
Почитать про sizeof и убедиться, что всё верно.
__________________
There's always more than one way to skin a cat.
|
|
|
|
16.10.2013, 01:06
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.06.2005
Сообщений: 1,387
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Re: Помощь в WinAvr
Сообщение от AGAT0365
|
|
fg=sizeof(sdc);
|
заменить на
fg=strlen(sdc);
|
|
|
|
16.10.2013, 17:08
|
|
|
Прописка
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Помощь в WinAvr
Сообщение от TEHb
|
заменить на
fg=strlen(sdc);
|
Спасибо, но это практически тоже самое, как я понимаю, только не учитывает последнию литеру '/0'.
|
|
|
|
16.10.2013, 17:23
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.06.2005
Сообщений: 1,387
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Re: Помощь в WinAvr
Сообщение от AGAT0365
|
|
Спасибо, но это практически тоже самое, как я понимаю, только не учитывает последнию литеру '/0'.
|
Нет, это совершенно не то.
sizeof() вычисляется на этапе компиляции и возращает размер объекта. В данном случае, видимо, всегда будет значение 2 - размер указателя в AVR.
strlen() же шагает по памяти и считает байты, пока не дойдёт до 0.
|
|
|
|
16.10.2013, 18:34
|
|
|
Прописка
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Помощь в WinAvr
Сообщение от TEHb
|
Нет, это совершенно не то.
sizeof() вычисляется на этапе компиляции и возращает размер объекта. В данном случае, видимо, всегда будет значение 2 - размер указателя в AVR.
strlen() же шагает по памяти и считает байты, пока не дойдёт до 0.
|
Теперь понятно,спасибо.Всё как мне и надо.
|
|
|
|
27.10.2013, 16:08
|
|
|
Прописка
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Помощь в WinAvr
Доброго времени сутук.
void pre_priem( volatile char* kodd){}
вопрос в том что возможно использования квалификатора volatile
в данном случае, мне надо что бы компилятор обращал внимание на указатель kodd?
|
|
|
|
27.10.2013, 18:20
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Помощь в WinAvr
Попробую предположить, в чём состоял вопрос.
Итак: - Использование возможно.
- Компилятор на переменную kodd внимание обратит.
__________________
There's always more than one way to skin a cat.
|
|
|
|
28.10.2013, 15:41
|
|
|
Прописка
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Помощь в WinAvr
Сообщение от tempora
|
Попробую предположить, в чём состоял вопрос.
Итак:Использование возможно.
|
Спасибо, то что я хотел уточнить.
|
|
|
|
28.10.2013, 16:17
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Помощь в WinAvr
Сообщение от AGAT0365
|
|
Спасибо
|
А для чего нужен такой необычный ход?
__________________
There's always more than one way to skin a cat.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:47.
|
|