The*_*des 16 c enums struct initialization declaration
以下代码必须在main-function中使用,但我不知道它是如何使用的.
struct SomeItem
{
enum {MOVIE, MUSIC} itemType;
union {
struct Movie* movie;
struct Music* music;
};
};
Run Code Online (Sandbox Code Playgroud)
这个结构用在带有previous/item/next指针的动态链表中,但我不知道如何设置枚举.或者如何初始化它.
我需要知道它在main函数中的样子.
biglist.someitem = ???;
/* declaration I use */
struct Library* biglist;
Run Code Online (Sandbox Code Playgroud)
更多代码,以了解我想要做什么.
struct Library{
struct SomeItem* someitem;
struct SomeItem* previousItem;
struct SomeItem* nextItem;
};
Run Code Online (Sandbox Code Playgroud)
编译错误:C2037:'someitem'左边指定未定义的struct/union'library'C2065:MOVIE:未声明的标识符
我仍然是ANSI C的新秀,所以不要拍我好;)
Jos*_*phH 13
你到处都在使用指针,所以你需要使用 - >来引用这些项目.
即. biglist->someitem->itemType = MOVIE;
下面的代码用gcc -Wall -strict编译得很好:
struct SomeItem
{
enum {MOVIE, MUSIC} itemType;
union {
struct Movie* movie;
struct Music* music;
} item;
};
struct Library{
struct SomeItem* someitem;
struct SomeItem* previousItem;
struct SomeItem* nextItem;
};
int main(void)
{
struct Library* biglist;
biglist->someitem->itemType = MOVIE;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(虽然这个代码当然不会运行,因为我没有为biglist和someitem分配任何内存!)