如何解决如何在c中具有相同名称但不同类型的变量?
具有此标头和.c文件:
foo.h
extern void * Foo;
struct Foo { unsigned val; };
foo.c
int main(){
void * Foo;
}
它可以正确编译,但是有2个具有2个不同类型(void*
,struct {...}
)但名称相同的变量。
那怎么可能?
编译器如何知道哪个?
解决方法
struct Foo
是您创建的类型,Foo
不是声明的变量,它是类型名称的一部分。
名称为struct Foo
的{{1}}类型的变量将被声明如下:
Foo
只有这样,两个变量才会具有相同的名称:
struct Foo Foo;
^^^^^^^^^^ ^^^
|| |
type name
此代码将产生预期的错误:
struct Foo { unsigned val; }; //new type extern void* Foo; // variable named Foo of type void* struct Foo Foo; // variable named Foo of type struct Foo
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。