Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Работа с указателями

Непрочитано 18.06.2012, 10:12  
Fair88Play
Временная регистрация
 
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
Fair88Play на пути к лучшему
По умолчанию Работа с указателями

Код:
unsigned char *p;

void main (void)
	{
		for(p = 0x25; p ‹ 0x30; p++)
			{
				*p = 0xAA;
			}
		while(1)
			{
			}
	}
Ошибка при компилировании operands of "‹" not same type
Подскажите плиз, что не так
Реклама:
Fair88Play вне форума  
Сказали "Спасибо" Fair88Play
warel (29.06.2019)
Непрочитано 18.06.2012, 10:42  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Работа с указателями

вообще то, для указателей операции сравнений не определены, надо изменить сам алгоритм итерации.
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (29.06.2019)
Непрочитано 18.06.2012, 10:53  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Работа с указателями

Или попробуйте сделать так:
Цитата:
unsigned char *p, *max;
max = p+n;
void main (void)
{
for(p = 0x25; p ‹ max; p++)
{
*p = 0xAA;
}
while(1)
{
}
}
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (29.06.2019)
Непрочитано 18.06.2012, 10:55  
Fair88Play
Временная регистрация
 
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
Fair88Play на пути к лучшему
По умолчанию Re: Работа с указателями

max = p+n;
а n чему равно?
Fair88Play вне форума  
Сказали "Спасибо" Fair88Play
warel (29.06.2019)
Непрочитано 18.06.2012, 10:57  
AJScorp
Почётный гражданин KAZUS.RUN
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Работа с указателями

Сообщение от Fair88Play Посмотреть сообщение
operands of "‹" not same type
Операнды разного типа, поэтому их нужно привести к типу указателя.

Код:
unsigned char *p;

void main (void)
{
for(p = (unsigned char *)0x25; p ‹ (unsigned char *)0x30; p++)
 {
 *p = 0xAA;
 }
while(1)
 {
 }
}
AJScorp вне форума  
Сказали "Спасибо" AJScorp
warel (29.06.2019)
Непрочитано 18.06.2012, 10:59  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,398
Сказал спасибо: 85
Сказали Спасибо 678 раз(а) в 396 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Работа с указателями

Как-то так ( byte определил, т.к. лениво писать unsigned char) :

Код:
typedef unsigned char byte;
byte *p;

void main (void)
	{
//на всякий случай p=0, т.к. неизвестна разрядность Ваших указателей,
//чтоб старшие байты, если есть, стали нулевыми
p=0;
		for((byte)p = 0x25; (byte)p ‹ 0x30; p++)
			{
				*p = 0xAA;
			}
		while(1)
			{
			}
	}
pambaru вне форума  
Сказали "Спасибо" pambaru
warel (29.06.2019)
Непрочитано 18.06.2012, 11:03  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,398
Сказал спасибо: 85
Сказали Спасибо 678 раз(а) в 396 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Работа с указателями

Либо наоборот:

Код:
typedef unsigned char byte;
byte p;

void main (void)
	{
		for(p = 0x25; p ‹ 0x30; p++)
			{
				*((byte*)p) = 0xAA;
			}
		while(1)
			{
			}
	}
pambaru вне форума  
Сказали "Спасибо" pambaru
warel (29.06.2019)
Непрочитано 18.06.2012, 11:39  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Работа с указателями

pambaru, чем же Ваш первый вариант отличается от варианта ТС, второй вариант вообще ошибочен.
Сообщение от Fair88Play Посмотреть сообщение
max = p+n;
а n чему равно?
n=0х30-0х25, а вообще, вариант из #5 более правильный, почему то, мне казалось, что приведение возможно только переменных.
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (29.06.2019)
Непрочитано 18.06.2012, 12:08  
Fair88Play
Временная регистрация
 
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
Fair88Play на пути к лучшему
По умолчанию Re: Работа с указателями

Большое спасибо за ответы, проблема решилась!
Fair88Play вне форума  
Сказали "Спасибо" Fair88Play
warel (29.06.2019)
Непрочитано 18.06.2012, 12:20  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,398
Сказал спасибо: 85
Сказали Спасибо 678 раз(а) в 396 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Работа с указателями

Цитата:
pambaru, чем же Ваш первый вариант отличается от варианта ТС
Приведением указателя к типу byte.

В CodevisionAVR не компилится первый вариант, а Keil uVision ARM все ок (только варнинги на счет размере переменной, но об этом позаботилось p=0; )

Цитата:
второй вариант вообще ошибочен.
На мой взгляд все ок.
Компилится и в CodevisionAVR и в Keil uVision ARM.
Вообще подобные конструкции я частенько применяю.
Пример:

#define rpuLanData (*(volatile byte*)(ChipParAddr+6))
pambaru вне форума  
Сказали "Спасибо" pambaru
warel (29.06.2019)
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напряжённая работа Roshens Отвлекитесь, эмбеддеры! 8 01.09.2010 23:08
Работа в Proteus Alena_1986 Микроконтроллеры, АЦП, память и т.д 7 22.05.2009 18:25


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.