Запись значения по опpеделенному адpесу IAR C

Привет Nikolay!

08 Jun 05 23:57, Nikolay Maznyov писал Andy Mozzhevilov:

AM>> Тогда вопрос, какой опыт программирования на Си был у того чела AM>> вообще и опыт работы с х51 в частности?

NM> А не всё ли равно? Смысл не поменяется. Два компилятора без замечаний NM> собрали код работающий по разному. Причём подозреваю, что оба были NM> "правы" в своём понимании/расшерении/ещё чего-нибудь.

====== test.c ========== #include <stdio.h>

union { char c[2]; unsigned short s; } var;

int main(void) { var.c[0] = 1; var.c[1] = 2; printf("%d\n", var.s); return 0; } ========================

Разные компиляторы скомпилируют без замечаний, но программа будет печатать разные числа. Причем заметь, не используется _никаких_ нестандартных расширений, и компиляторы будут правы. А неправ буду я как автор этой программы, ибо заложился на конкретный endianness.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Программисты и программистки! Выше флаг промежуточного переноса!

Reply to
Alex Mogilnikov
Loading thread data ...

Hello Zahar.

08 Jun 05 00:05, you wrote to me:

AB>> Это я к тому - было бы желание у апологетов Ады её использовать в AB> AB>> embedded. ZK> Между желанием использовать более-менее работоспособный компилятор и ZK> желанием самолично его туда портировать - довольно существенная ZK> разница.

Имхо - несущественная. Есди очень хочется - или купи готовый, или портируй сам, или закажи портирование другому. Иначе - не сильно то и хочется.

ZK> Я вот Аду довольно прилично знаю (на х86), и даже в ZK> портировании на Atmega128 поучаствовал бы, тем более что некоторый ZK> личный интерес есть. Однако кто меня будет содержать,пока я в ZK> мегабайтах исходников ковыряться буду?...

Hу, вот примерно так обычно и получается.

Alexey

Reply to
Alexey Boyko

Привет, Alex !

09 Jun 05 , 12:26 Alex Mogilnikov писал к Nikolay Maznyov:

AM> ====== test.c ========== AM> #include <stdio.h>

AM> union { AM> char c[2]; AM> unsigned short s; AM> } var;

AM> int main(void) AM> { AM> var.c[0] = 1; AM> var.c[1] = 2; AM> printf("%d\n", var.s); AM> return 0; AM> } AM> ========================

AM> Разные компиляторы скомпилируют без замечаний, но программа будет AM> печатать разные числа. Причем заметь, не используется _никаких_ AM> нестандартных расширений, и компиляторы будут правы. А неправ буду я AM> как автор этой программы, ибо заложился на конкретный endianness.

Кроме endianness есть еще и "pragma pack 1" и разные ее аналоги.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Шагающий авианосец

Reply to
Nickita A Startcev

Fri Jun 10 2005 02:03, Nickita A Startcev wrote to Alex Mogilnikov:

AM>> ====== test.c ========== AM>> #include <stdio.h>

AM>> union { AM>> char c[2]; AM>> unsigned short s; AM>> } var;

AM>> int main(void) AM>> { AM>> var.c[0] = 1; AM>> var.c[1] = 2; AM>> printf("%d\n", var.s); AM>> return 0; AM>> } AM>> ========================

AM>> Разные компиляторы скомпилируют без замечаний, но программа будет AM>> печатать разные числа. Причем заметь, не используется _никаких_ AM>> нестандартных расширений, и компиляторы будут правы. А неправ буду я AM>> как автор этой программы, ибо заложился на конкретный endianness.

NAS> Кроме endianness есть еще и "pragma pack 1" и разные ее аналоги.

Hе надо пользоваться union без крайней необходимости.

Reply to
Yuriy K

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.