operator sizeof zwraca różne wartości dla c & c ++?

Tablica znaków jest zdefiniowana globalnie, a struktura o tej samej nazwie jest zdefiniowana w funkcji. Dlaczego operator sizeof zwraca różne wartości dla c & c ++?

char S[13];
void fun()
{
    struct S
    {
        int v;
    };
    int v1 = sizeof(S);
}

// zwraca 4 w C ++ i 13 w C