下述代码在C文件中可以,在CPP文件中不行,为何?

来源:百度知道 编辑:UC知道 时间:2024/06/03 18:29:18
typedef int i;
enum i {A,B,C};

C++中呢,struct sss{},这个sss相当于C中隐式的typedef struct sss{}sss;

所以typedfe int i;之后,i就被注册为了int,不能再被用做其他类型表示符,C允许的原因是:

每次你定义这个enum时,都要加上enum前缀(struct也要加上struct前缀,如果你没有typedef),

所以在C中,
typedef int i; // 定义int的类型别名i
enum i{A,B,C}; // 定义枚举类型i

i a = 1; // a是int
enum i b = A; // b是enum i

还有疑问吗?

不知,等LX回答

猜测是因为C语言对变量定义检查要求没有C++严格(VC对于.c文件和.cpp文件是分开处理的)