Frage an die C-Experten:

Dieses Thema im Forum "Softwareforum" wurde erstellt von Silent Hunter, 19. Mai 2013.

  1. Silent Hunter Bambis Alptraum

    Silent Hunter
    Registriert seit:
    7. März 2000
    Beiträge:
    28.612
    Wie initialisiere ich ein struct-Mitglied vom Typ char *[]?

    Ich will so etwas wie

    Code:
    const char *name[] = {"Alice", "Bob"};
    als Teil einer Struktur haben:

    Code:
    struct
    {
        const char *name[];
    } x =
    
    {
    {"Alice", "Bob"}
    };
    
    Dem Compiler gefällt letzteres aber gar nicht ("too many initializers for 'char* [0]").
     
  2. fuzzykiller Der Forentroll schlechthin

    fuzzykiller
    Registriert seit:
    27. Dezember 2003
    Beiträge:
    53.930
    Welchen C-Standard benutzt du überhaupt? Sicher, dass das geht?
    Und tuts nicht auch eine normale Zuweisung eine Zeile später?

    /edit: Abgesehen von der Unsinnigkeit meint gcc folgendes:
    test.c:3:17: error: flexible array member in otherwise empty struct

    Folgendes Minimalbeispiel compiliert, getestet habe ich nichts:
    Code:
    struct
    {
        int bla;
        const char *name[];
    } x =
        {
            1,
            {"Alice", "Bob"}
        };
    
    /edit2:
    https://www.securecoding.cert.org/c...and+how+flexible+array+members+are+to+be+used
     
    Zuletzt bearbeitet: 19. Mai 2013
Top