LISP에서 사용할 수있는 int 및 포인터 등의 구조체를 만들었습니다.C에서 익명 구조의 두 번째 멤버를 초기화하는 방법은 무엇입니까?
포인터가 8 바이트 단위로 정렬되어 있으므로 tag = 0입니다. 정수는 29 비트이고 태그는 1입니다. 다른 유형은 다른 태그 값을 갖습니다.
struct Atom{
union{
Pair *pair;
struct{
unsigned tag :3;
union{
int val :29;
char ch;
struct{
int mant :21;
Exp exp :8;
};
};
};
};
};
나는 그들을 다르게 초기화하고 싶습니다. 포인터를 들어
: 내가 생각하기 때문 작동
Atom aPair = {{.pair=0}}; // works
또는
Atom aPair = {{0}}; //works
는 GCC 내가 노동 조합의 첫 번째 멤버를 초기화 할 것으로 가정합니다.
나는 또한 정수를 초기화하고 싶습니다-이 같은 :
Atom anInt={{ {.tag=1,{.val=0} } }};
난이없는 표준 C 알지만, GCC에서 익명 구조체와 전혀이 가능합니까?
내가 대답 한 답변이있었습니다. 어디로 갔습니까? 누군가가 Atom을 사용하도록 제안했습니다. anInt = {. tag = 1, .val = 0}; 그것은 작동하지 않았지만 시도하지 않은 것이 었습니다. 그리고 제 질문을 읽고 뭔가 제안 할 시간이 걸렸습니다. – philcolbourn