Q:

Array of structs inside of another struct in C

I've browser all the similar questions but they're either too specific or not related enough to my problem at hand. 
I'm going to try to make it as general as possible. 
The problem: I have a "Playlist" struct and a "Song" struct. One of the elements of my "Playlist" struct is an array of Songs. I want to be able to hardcode an X number of songs and append them to the array of songs within the Playlist struct. 
This is my code:
#include <stdio.h>
#include <stdlib.h>

typedef struct Song {
    int id;
    char *artist;
    float duration;
    char *album;
} Song;

struct Playlist {
    char *name;
    int id;
    char *author;
    struct Songs *songs;
};

int main(int argc, char const *argv[])
{
    struct Playlist spotify;
    spotify.name = "Your Top Songs 2019";
    spotify.id = 1;
    spotify.author = "Spotify";
    spotify.songs = malloc(5 * sizeof(struct Song));
    Song s;
    s.id = 1;
    spotify.songs[0] = s;
    return 0;
}

When I try to compile it, I get the following error:
test.c:27:18: error: subscript of pointer to incomplete type 'struct Songs'
    spotify.songs[0] = s;
    ~~~~~~~~~~~~~^
test.c:15:12: note: forward declaration of 'struct Songs'
    struct Songs *songs;
           ^
1 error generated.

and I'm not sure what it means or how to solve it. Any guidance would be greatly appreciated. 

A:

struct Songs *songs; forward declares a struct named Songs, which stays as an incomplete type. What you probably meant is struct Song *songs;.

