-
- Возможно, это ошибка из разряда таких (из последнего Release Note): RedFroggy(1218 знак., 22.02.2013 10:25)
- Это не помогает, пробывал RedFroggy(143 знак., 22.02.2013 10:04 - 10:08)
- Не верю. - SciFi(22.02.2013 10:11)
- Сразу опишите buff как unsigned char. И в каком положении у вас стоит галочка "Enable ANSI integer promotion rules" во вкладке C51 опций проекта? - vmp(22.02.2013 10:09)
- Enable ANSI integer promotion rules - галочка установлена - RedFroggy(22.02.2013 10:12)
- Тогда попробуйте Var1 = (unsigned int)buff[2] + 4; - vmp(22.02.2013 10:13)
- Это тоже не помогает - RedFroggy(22.02.2013 10:21)
- Ну а принудительно на ноль помножить? 0x00ff & (int)buf[] - Vladimir Ljaschko(22.02.2013 10:47)
- Самое плохое - что ошибка неявная. Т.е. все способы, которые сразу приходят в голову, по приведению типов и т.п. - НЕ работают. Так как конструкцию 0xC0 + 4 работает, то всё что приходит в голову - какая-то проблема с передачей указателя на RedFroggy(157 знак., 22.02.2013 10:56)
- пробуем так abivan(522 знак., 22.02.2013 11:12 - 11:26)
- Паяльником старший адрес закоротить на землю :-) - SciFi(22.02.2013 10:51)
- Криптометод? RedFroggy(132 знак., 22.02.2013 11:07)
- Вы не поверите - это было первое, что я сделал. Но увы... - RedFroggy(22.02.2013 10:50)
- Попробуйте no int promotion. Тогда компилятор будет использовать байтовую арифметику, вместо полагаюшегося по стандарту предварительного перевода из char в int. - vmp(22.02.2013 10:54)
- "Фу, кейл" подумали те, кто использует ИАР. Загадка. - Vladimir Ljaschko(22.02.2013 10:54)
- Пользуюсь и тем, и другим. Надо только привыкнуть, что Keil C51 - это не язык Си, а некий специфический язык программирования, заточенный под архитектуру 8051. - vmp(22.02.2013 11:09)
- Так и я тоже и тем и другим. Но сейчас Keil. Так получилось. - RedFroggy(22.02.2013 11:13)
- Подумали и хорошо. Можно и в ИАРе на ровном месте яму с гов...м найти и в ней утонуть. - RedFroggy(22.02.2013 10:59)
- Пользуюсь и тем, и другим. Надо только привыкнуть, что Keil C51 - это не язык Си, а некий специфический язык программирования, заточенный под архитектуру 8051. - vmp(22.02.2013 11:09)
- Самое плохое - что ошибка неявная. Т.е. все способы, которые сразу приходят в голову, по приведению типов и т.п. - НЕ работают. Так как конструкцию 0xC0 + 4 работает, то всё что приходит в голову - какая-то проблема с передачей указателя на RedFroggy(157 знак., 22.02.2013 10:56)
- Ну а принудительно на ноль помножить? 0x00ff & (int)buf[] - Vladimir Ljaschko(22.02.2013 10:47)
- Это вредный совет, так как (unsigned int)(signed char)'\xC0' == 0xFFC0u. - SciFi(22.02.2013 10:18)
- Это тоже не помогает - RedFroggy(22.02.2013 10:21)
- Тогда попробуйте Var1 = (unsigned int)buff[2] + 4; - vmp(22.02.2013 10:13)
- Enable ANSI integer promotion rules - галочка установлена - RedFroggy(22.02.2013 10:12)
- И чего правильного? Ни разу на такое не наталкивался, а явное приведение типов использую только чтобы варнингов было поменьше... POV(69 знак., 22.02.2013 10:06)