2016-03-02 44 views
-2

如何在其他typedef struct中声明typedef struct另一个typedef中的typedef结构格式struct

typedef struct { 
    char* type; 
    char* destination; 
    float price; 
    typedef struct { 
     int date; 
     int month; 
     int year; 
    }date; 
}Offer; 

我试过类似的东西,但我不知道它是否正确。我想在typedef struct中声明日期格式的另一个typedef结构体。

回答

1

而不是你写的,让我们尝试这样的事:

typedef struct { 
    int date; 
    int month; 
    int year; 
} OfferDate; 


typedef struct { 
char* type; 
char* destination; 
float price; 
OfferDate date; 
} Offer; 
+0

而且,我怎么能在这个函数实现日期:'要约创建(的char *类型,字符*目的地,浮动价格, DATE);'? – Kaiac

+0

'提供创建(char *类型,char *目的地,浮动价格,OfferDate日期);'@CristianTimar像这样。 – Shark

+0

我参考了c书的一部分,但我急需这个指导。谢谢 ! – Kaiac

2

试试这个:

typedef struct { 
    char* type; 
    char* destination; 
    float price; 
    struct { 
    int day; 
    int month; 
    int year; 
    } date; 
} Offer; 

date定义为匿名结构的。如果您需要在其他地方使用此结构,请使用Shark's approach

+0

刚刚添加到我的答案作为替代。 :) – Shark

+0

@CristianTimar:'提供创建(字符*类型,字符*目的地,浮动价格,INT天,INT月,INT年);'? – alk

+0

他实际上在问如何构造对象,使用该方法签名 - 您需要告诉他如何将“day”,“month”和“year”分配给要返回的结构。由于它是匿名的,它不能作为参数传递。这是他没有得到的部分,该怎么办'Offer.date.day = ;' – Shark

0

那是不正确的语法。如果你想使用另一种结构来定义结构,你可以做这样的:

typedef struct { 
    int a1; 
    int a2; 
} ExampleStruct1; 

typedef struct { 
    int b1; 
    ExampleStruct1 b2; 
} ExampleStruct2;