[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
По поводу машинной и компиляторной зависимости смотрите пример в моем ответе с условной компиляцией. Никаким способом Вы не сможете обеспечить гарантированную идентичность любых сложных типов данных с точки зрения деталей их размещения в памяти для всех версий компиляторов и всех платформ. Просто на мой взгляд, запись longVar.AsBytes[1] более наглядна, чем *(((unsigned char *)(&longVar))+1). Кроме того, есть вероятность того, что на запись longVar.AsBytes[1000] компилятор выдаст предупреждение о выходе за верхний предел индекса массива ( некоторые компиляторы точно это делают ), а вот на запись *(((unsigned char *)(&longVar))+1000) - никогда. Если Вас прельщает перспектива ловли таких ошибок, то флаг Вам в руки, а я лучше обойдусь без них. Кроме того, стоило бы напомнить, что вопрос был о побайтовой передаче содержимого структуры, состоящей из трех длинных целых и одного байта, а не о преобразовании типов.
E-mail: info@telesys.ru