Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR-GCC: warning "large integer implicitly truncated to unsigned type"
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
ARV
сделал вот такие макросы:
Код
#define s65_w8(x)        do { \
    clr(CS); \
    spi_out_wait(x); \
    set(CS); \
    }while(0)
/// вывод 16 бит команды
#define s65_cmd16(x)    do { \
    set(RS); \
    s65_w8((x)>>8); \
    s65_w8(x); \
    } while(0)

#define    set(x)        S65_PORT |= (x)
#define    clr(x)        S65_PORT &= ((x)^0xFF)

теперь их использую:
Код
uint8_t x;
#define ASX 0x1200

s65_cmd16(0x1806); // ЕСТЬ ВАРНИНГ
s65_cmd16(ASX+x); // НЕТ ВАРНИНГА

в общем, не могу понять, в каком месте возникает это самое усекновение знакового числа в беззнаковое... надоела куча варнингов... можно отключить, но надо ж понять...
_Pasha
Цитата
...
s65_w8(x & 0xff); \
...

?
zltigo
QUOTE (_Pasha @ Dec 15 2010, 12:52) *
s65_w8(x & 0xff);

Фу sad.gif (два раза,один за отсутствие скобок, второй за 0xFF)
s65_w8( (unsigned short)(x));


_Pasha
Цитата(zltigo @ Dec 15 2010, 13:15) *
Фу sad.gif

Принято laughing.gif
ARV
а почему так было?
Код
s65_cmd16(0x1806); // ЕСТЬ ВАРНИНГ
s65_cmd16(ASX+x); // НЕТ ВАРНИНГА


вообще говоря, я был уверен, что варнинга не должно быть, если в байтовую переменную заносим двухбайтное значение - тупо берется младший байт и все. оказалось - и варнинг при этом всплывает...
ReAl
Если двухбайтовую переменную или выражение с переменными, то молча приводит тип, а если слишком большую константу, то ворчит. Такие у него взгляды на жизнь. Типа программист с переменной и так знает, что делает, а с константой мог и промахнуться нечаянно.
_Pasha
Цитата(zltigo @ Dec 15 2010, 13:15) *
s65_w8( (unsigned short)(x));

Кстати - вопрос родился. Не считают ли уважаемые, что используя <stdint.h>, возвращаться обратно к встроенным целым типам чревато?
ARV
Цитата(ReAl @ Dec 15 2010, 14:13) *
Если двухбайтовую переменную или выражение с переменными, то молча приводит тип, а если слишком большую константу, то ворчит. Такие у него взгляды на жизнь. Типа программист с переменной и так знает, что делает, а с константой мог и промахнуться нечаянно.
вот из-за этих взглядов я и вынужден был беспокоить общественность sm.gif)) подвох, однако...

2 _Pasha: ну так можно (uint8_t)(x)
_Pasha
Цитата(ARV @ Dec 15 2010, 14:26) *
2 _Pasha: ну так можно (uint8_t)(x)

Я к тому, что на определенном этапе эти сущности перестают быть тождественными, или могут перестать. А типы с неизменной длиной для протокольных частей ой как нужны. Так?
ARV
Цитата(_Pasha @ Dec 15 2010, 14:34) *
Так?
так sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.