저는 C1x의 익명 구조에 대해 다소 혼란 스럽습니다. 적절하게 변환 된 구조체 포인터가 첫 번째 멤버를 가리키는 규칙이 초기 익명 구조체에 적용되는지 또는 단순히 초기 익명 구조체의 초기 멤버에 적용되는지 규칙이 적용됩니까? 특히이 프로그램은 C1x에서 의미가 있습니까?구조 포인터가 C1x의 초기 익명 멤버를 가리 키도록 변환 할 수 있습니까? 이것도 올바른 질문입니까?
#include<stdio.h>
struct node {
struct node *next;
};
/* Does C1x even allow this? Do I have to define struct node inside of inode?
* Are anonymous struct members even allowed to have tags?
*/
struct inode {
struct node;
int data;
};
int main(void) {
inode node1 = {NULL, 12};
inode *ihead = &inode;
node *head = (struct node *)ihead;
/* These should work since struct inode's first member is a struct node. */
printf("Are these equal? %c", head == &node1.next ? 'Y' : 'N');
printf("Is next NULL? %c", head->next == NULL ? 'Y' : 'N');
return 0;
}
This 대답은 내가 대신 익명 구조체의 이름이 구조체에 대해 물어 될 수 있음을 시사한다. 익명 구조체의 본질을 완전히 오해하고 있습니까?
나는 내 전화를 다시 때 대답을 보려고합니다. 그동안 나는 현상금을 더했습니다.나는이 행동을 용서해서는 안되지만이 질문에 부딪 치거나 그것에주의를 끌기위한 어떤 방법을 찾을 수 있는지보십시오. 나는 그 대답을 알고 싶다. –