int main()
{
// forward declaration
struct myStruct_st *mS; // Note that this will expand as "struct struct myStruct_st *mS which does not make any sense to me"
return 0;
}
// definition of myStruct_s
typedef struct myStruct_s
{
int x;
int y;
} myStruct_st;
我知道myStruct_s是需要向前声明的结构。我的代码中有这个拼写似乎编译。我不知道怎么样。有谁知道吗?
答案 0 :(得分:4)
本地结构使用main()
之外定义的结构无事可做。在main()
中,您(转发)声明一个结构,定义一个指向该结构的指针,从不定义该结构。那完全没问题。碰巧在$ {1}}之外定义一个名称相同的结构。
答案 1 :(得分:0)
我认为你误解了typedef
是如何运作的 - 它不是宏观替代。
特别是,在struct myStruct_s
之后使用typedef
与“struct struct myStruct_s
”相同 - 它只是struct myStruct_s
,因为它读到脸上。 typedef引入了一个可以使用而不是struct ...
的令牌,但它不会像宏那样扩展,也不会“消灭”struct ...
声明,它仍然可以使用。 / p>