- копирование строки и присваивание значения переменной - разные вещи. Для начала - что Вы хотите сделать?Дык у меня на таком стандарте всё работало... Как поставил sprintf всё отказало к чертям собачьим
Вопросы по С/С++ (СИ)
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
- Реклама
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Если только он будет не с похмелья и ему не будет тяжело смотреть внизFreshMan писал(а):допускает ли Си перенос команды на другую строчку ?
Расшифруйте свой вопрос.
Re: Вопросы по С/С++ (СИ)
У мя стандартный CVAVR.
А возможно вот это
вывести через
Просто в таком виде само собой ошибка летит. Я пробовал *lcdA в строке со sprintf, но толку нет всё равно...
А возможно вот это
Код: Выделить всё
char flash *lcdA = "erye";Код: Выделить всё
sprintf (lcdA,"%u",code);
lcd_putsf( lcdA );
Последний раз редактировалось isx Вт июн 05, 2012 19:01:49, всего редактировалось 1 раз.
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
Код: Выделить всё
char flash *lcdA = "erye"; Код: Выделить всё
lcdB = "ytie";ЗЫ. небольшой намек - зачем существует функция strcpy() ?
Последний раз редактировалось ChipKiller Вт июн 05, 2012 19:04:08, всего редактировалось 1 раз.
- Реклама
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Квалификатор flash, скорее всего, говорит о том, что бы поместить массив в область программной памяти. А Вы его пытаетесь изменить, вот и ошибка...
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
мона и даже - нунаFreshMan писал(а): If (x==0)
y=1
так мона ?
Re: Вопросы по С/С++ (СИ)
Вот написал новую программу чтоб вам подробней представить проблему...
В таком варианте компилятор ругается на lcdA = "BEZHELME";
Если убрать строку sprintf (lcdA,"%u",code); то всё работает и на экране светиться BEZHELME
Если оставить строку sprintf (lcdA,"%u",code); , и убрать строку lcdA = "BEZHELME";, то всё начнёт работать нормально....
Но мне переодически необходимо менять содержимое lcdA....
Код: Выделить всё
char flash *lcdA = "erye";
char *lcdB = "Tyujfkvi";
int code = 4;
void main( void )
{
lcdA = "BEZHELME";
lcd_init( 16 );
lcd_clear( );
lcd_gotoxy( 0,0 );
sprintf (lcdA,"%u",code);
lcd_putsf( lcdA );
lcd_gotoxy( 0,1 );
lcd_puts(lcdB);
}Если убрать строку sprintf (lcdA,"%u",code); то всё работает и на экране светиться BEZHELME
Если оставить строку sprintf (lcdA,"%u",code); , и убрать строку lcdA = "BEZHELME";, то всё начнёт работать нормально....
Но мне переодически необходимо менять содержимое lcdA....
Последний раз редактировалось isx Вт июн 05, 2012 19:08:56, всего редактировалось 1 раз.
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
2 Chip115 if(chScanPort != 0х80) и if(chScanPort != 0) - разные вещи, чего же вы ждете от дизассемблера?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
isx , у Вас памяти маловато 
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
2 isx - еще раз ... это что?
Аlex - у него маловато знаний и внимательности, а не памяти
Код: Выделить всё
lcdA = "BEZHELME";Аlex - у него маловато знаний и внимательности, а не памяти
Re: Вопросы по С/С++ (СИ)
Это вся программа, а памяти там ещё много свободной...
это я присваиваю переменной lcdA значение (или массив символов) BEZHELME.
ChipKiller писал(а):2 isx - еще раз... это что?Код: Выделить всё
lcdA = "BEZHELME";
Код: Выделить всё
lcdA = "BEZHELME";Re: Вопросы по С/С++ (СИ)
вот кстати ошибка Error: C:\Users\isx\Desktop\Ôëåêñ\Íîâàÿ ïàïêà\167.c(26): function argument #1 of type 'flash unsigned char *' is incompatible with required parameter of type 'unsigned char *'
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
А lcdA какой тип имеет ?это я присваиваю переменной lcdA значение (или массив символов) BEZHELME.
Re: Вопросы по С/С++ (СИ)
Код: Выделить всё
char flash *lcdA = "erye";- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
А у Вас в исходникеisx писал(а):здесь она объявляетсяКод: Выделить всё
char flash *lcdA = "erye";
Код: Выделить всё
lcdA = "BEZHELME";
Re: Вопросы по С/С++ (СИ)
Так в самом верху исходника она объявляется...
А то что вы указали находится в main. Там её значение меняется...
А то что вы указали находится в main. Там её значение меняется...
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
ладно - цирк уже надоел
1 если переменная находится во flash - это константа
2 если строку нужно поместить в RAM - делаем так strcpy(lcdB,"Text") ;
1 если переменная находится во flash - это константа
2 если строку нужно поместить в RAM - делаем так strcpy(lcdB,"Text") ;
Re: Вопросы по С/С++ (СИ)
Это получается мне надо перевести её в RAM, поменять значение, и потом опять во FLASH?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
isx , в Си нельзя просто так присваивать указателю целую строку через знак равенства. Это делается через оператор strcpy, который копирует одну область памяти в другую.


