Giriş
Bu özellik C dilinde var. C++dilinde bu özellik yok. Açıklaması şöyle
Bu özellik C dilinde var. C++dilinde bu özellik yok. Açıklaması şöyle
Bir yapının içinde anonymous (anonim) bir başka yapı varsa, içerdeki yapının alanlarına direkt erişimi mümkün. Normalde b.foo.x. şeklinde yazmamız gerekirken şöyle yaparız.An unnamed member whose type specifier is a structure specifier with no tag is called an anonymous structure; an unnamed member whose type specifier is a union specifier with no tag is called an anonymous union. The members of an anonymous structure or union are considered to be members of the containing structure or union. This applies recursively if the containing structure or union is also anonymous.
typedef struct { int x; } foo;
typedef struct { foo; } bar;
int main(void)
{
bar b;
b.x = 1;
printf("%d\n", b.x);
}
Anonymouse Structure Union İçindeyse, Union'a Dahil Edilir
Açıklaması şöyle.
Açıklaması şöyle.
Şu kod derlenmez.An unnamed member whose type specifier is a structure specifier with no tag is called an anonymous structure; an unnamed member whose type specifier is a union specifier with no tag is called an anonymous union. The members of an anonymous structure or union are considered to be members of the containing structure or union. This applies recursively if the containing structure or union is also anonymous.
union A {
struct {
int a:1;
int b:2;
int c1:29;
}PACKED;
struct {
int a:1;
int b:2;
int c2:28;
int d:1;
}PACKED;
int val;
}PACKED;
Çünkü şöyle derlenir.union A
{
int a:1;
int b:2;
int c1:29;
int a:1;
int b:2;
int c2:28;
int d:1;
int val;
};
Hiç yorum yok:
Yorum Gönder