VS下同时使用struct和union出现编译错误
我在VS2008下编译如下C代码
#include <stdio.h>
union VARIABLE{
int i;
float f;
} var;
struct S_Type
{
char c;
int i;
double d;
};
int main()
{
var.f = 3.14f;
printf("var.f = %f\n", var.f);
struct S_Type s1;
printf("s1 address 0x%x\n", &s1);
printf("s1.c address 0x%x\n", &s1.c);
printf("s1.i address 0x%x\n", &s1.i);
printf("sizeof s1=%d\n", sizeof(s1));
return 0;
}
在“struct S_Type s1;”处出现错误:
error C2143: 语法错误 : 缺少“;”(在“类型”的前面)。
在注释掉
var.f = 3.14f;
printf("var.f = %f\n", var.f);
编译时正常。为什么给var.f赋值会影响后面S_Type s1的定义呢?
在后面改成:
#include <stdio.h>
union VARIABLE{
int i;
float f;
} var;
struct S_Type
{
char c;
int i;
double d;
} s1;
int main()
{
var.f = 3.14f;
printf("var.f = %f\n", var.f);
int i;
return 0;
}
在”int i“这一行依旧提示编译错误:error C2143: 语法错误 : 缺少“;”(在“类型”的前面)。
难道是VS在编译C程序的一个bug?
天然呆花痴魁
12 years ago