현재 임베디드 코드 포트 (Freescale S12)에서 작업 중이므로 GNU와 나는 노동 조합에 문제가 있습니다. 난 다음 노동 조합통합 및 메모리 정렬 관련 문제
typedef signed short sint16;
typedef signed long sint32;
typedef union
{
sint32 Akku;
sint16 AkkuHigh;
sint16 AkkuLow;
} akku_type;
을 가지고 내가 노동 조합의 가장 높은 2 바이트를 액세스하려는. 문제는 AkkuHigh와 AkkuLow가 Akku와 같은 시작 주소를 가지고 있다는 것입니다. 그것은 컴파일러 특정 것으로 보인다. 내 질문은 : 노조의 동작을 변경하는 컴파일러 플래그가 있습니까? 공물 ((align (2))) 도와 드릴까요?
는AkkuLow
가 같은 주소를 가지고,
Akku
의 모든
AkkuHigh
, 사전
'익명의 내부 구조체'에'high'와'low' 필드를 포함하십시오. 엄밀히 말하자면 이식성이 없지만 작동해야합니다. –
왜 다른 주소를 갖기를 기대 했습니까? – Borgleader
@ 박영배 : C는 그것을 허용하고, 일반적인 C++ 확장 기능입니다. 왜위원회가 동굴에 들어 가지 않고 합법화하지 않았는지 궁금해 ... – Deduplicator