类型重复定义为何不可以呢?!!!!!
看到资料说在同一个编译单元里,类型不能重复定义。
但是如果在多个编译但单元里,类型却是可以重复定义的。为何?为何?
大家帮帮忙哦

解决方案 »

  1.   

    typedef int mytype;
    typedef double mytype;mytype mydata;
    mydata = 0;
    请问:
    1,mytype究竟是int还是double?
    2,mydata究竟是int还是double?
    3,printf("%d", mydata); 这里究竟该用%d还是该用%f?
      

  2.   

    简单:    无论任何条件,类型必须不二,才能清楚定位.
        A)假定一个编译单元x,有两个类同名,a,a,编译程序找到x.a和x.a无法区分.    B)假定两个编译单元x,y,有两个类同名,a,a,编译程序找到x.a和y.a能够区分.
        所以允许B,不允许A
      

  3.   

    编译单元 
     
    当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp 文件名同名的目标文件(.o或是.obj) 。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。