реклама на сайте
подробности

 
 
> работа с unsigned long
st_user
сообщение Apr 30 2007, 11:50
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 29-04-07
Пользователь №: 27 409



Подскажите пожалуйста, какие настройки компилтятора необходимо задать, чтобы он заработал с типом unsigned long согласно стандарту ANSI C.

И вообще, такой вопрос: может ли нормально работать компилятор с этими переменными. Например если я сдвигаю из младшего слова в старшее? Не будет ли что-нибудь потеряно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
st_user
сообщение Apr 30 2007, 13:27
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 29-04-07
Пользователь №: 27 409



Компилятор у меня IAR Atmel AVR C/EC++ Compiler V3.20C/W32.



А ещё такой вопрос: как компилятор понимает символ ^. Конечно, согласно стандарту Си это XOR, но может ли быть, что этот символ будет пониматься компилятором, к примеру, для доступа в регистры? Спасибо.

А проблема то похоже не в unsigned long, а в операторе ^, т.к. такую строку :

Код
v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);


компилятор нормально кушает только до первого символа ^.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 30 2007, 13:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(st_user @ Apr 30 2007, 13:27) *
А проблема то похоже не в unsigned long, а в операторе ^, т.к. такую строку :
Код
v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);

компилятор нормально кушает только до первого символа ^.

Сдается мне, что Вы просто сами запутались в битовых операциях sad.gif и неправильно выразили свою мысль компилятору. Само выражение, с точки зрения компилятора, проблем доставлять не должно никаких. Хотя, если если в выражении используется смесь long/не long и warnigs игнорируются, то вполне можете где-то элементарно точность потерять.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
st_user
сообщение Apr 30 2007, 13:57
Сообщение #4





Группа: Новичок
Сообщений: 6
Регистрация: 29-04-07
Пользователь №: 27 409



Цитата(zltigo @ Apr 30 2007, 14:48) *
Сдается мне, что Вы просто сами запутались в битовых операциях sad.gif и неправильно выразили свою мысль компилятору. Само выражение, с точки зрения компилятора, проблем доставлять не должно никаких. Хотя, если если в выражении используется смесь long/не long и warnigs игнорируются, то вполне можете где-то элементарно точность потерять.


Думаю что не запутался, потому что я проверил этот код в Visual Studio, всё нормально работает, а вот компилятор для AVR контроллера не понимает.

Точнее сам компилятор для AVR контроллера понимает строку, но вот программа не работает в контроллере.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st August 2025 - 17:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01758 секунд с 7
ELECTRONIX ©2004-2016