#include<stdio.h>
typedef union
{
struct accname
{
char sbi[20];
char canara[20];
char hdfc[20];
char icici[20];
};
} unionv;
void main()
{
unionv var1;
struct accname var2;
printf("sizeof union=%d\n",sizeof(var1));
printf("sizeof str=%d\n",sizeof(var2));
}
这里显示警告。
warning: declaration does not declare anything [enabled by default] }unionv
有人可以清楚它为什么会出现警告吗?
答案 0 :(得分:0)
根据https://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html#Unnamed-Fields
未命名的字段必须是没有标记的structure
或union
定义,例如
typedef union
{
struct accname
{
//member
}; // without tag
} unionv;
如果使用-fms-extensions
,该字段也可能是tag
的定义,例如struct foo { int a; };
,对先前定义的structure
或{{1}的引用例如union
;或对先前定义的struct foo
或typedef
类型的structure
名称的引用。