declaration does not declare anything : warning?

前端 未结 4 2160
暖寄归人
暖寄归人 2021-02-07 09:25
#include 
#include 
#include 

int main()
{
    struct emp
    {
        struct address
        {
              int a;
             


        
4条回答
  •  离开以前
    2021-02-07 09:39

    The reason why the compiler is showing the warning is because it doesn't see a name for the variable of type address you defined for the emp struct, even though you do declare something using address on the next line, but I guess the compiler is not smart enough to figure that out.

    As you showed, this produces a warning:

    struct emp {
      struct address {}; // This statement doesn't declare any variable for the emp struct.
      struct address a1;
    };
    

    But not this:

    struct emp {
      struct address {} a1; // This statement defines the address struct and the a1 variable.
    };
    

    Or this:

    struct address {};
    
    struct emp {
      struct address a1; //the only statement declare a variable of type struct address
    };
    

    The struct emp {} doesn't show any warnings since this statement is not inside a struct defintion block. If you did put it inside one of those then the compiler will show a warning for that as well. The following will show two warnings:

    struct emp {
      struct phone {};
      struct name {};
    };
    

提交回复
热议问题