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

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

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

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

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

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

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

Закрытая тема
Опции темы
Непрочитано 18.06.2012, 10:12   #1
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   #2
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Работа с указателями

вообще то, для указателей операции сравнений не определены, надо изменить сам алгоритм итерации.
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (29.06.2019)
Непрочитано 18.06.2012, 10:53   #3
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 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   #4
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   #5
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
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   #6
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,337
Сказал спасибо: 85
Сказали Спасибо 602 раз(а) в 365 сообщении(ях)
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   #7
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,337
Сказал спасибо: 85
Сказали Спасибо 602 раз(а) в 365 сообщении(ях)
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   #8
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 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   #9
Fair88Play
Временная регистрация
 
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
Fair88Play на пути к лучшему
По умолчанию Re: Работа с указателями

Большое спасибо за ответы, проблема решилась!
Fair88Play вне форума  
Сказали "Спасибо" Fair88Play
warel (29.06.2019)
Непрочитано 18.06.2012, 12:20   #10
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,337
Сказал спасибо: 85
Сказали Спасибо 602 раз(а) в 365 сообщении(ях)
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, время: 23:16.


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