Toon posts:

[C] Struct initialiseren

Pagina: 1
Acties:
  • 36 views sinds 30-01-2008

Verwijderd

Topicstarter
In mijn programma gebruik ik getopt om de opties te lezen, en getopt_long maakt gebruik van een array van structs. De struct ziet er als volgt uit en is gedefinieerd in getopt.h:

C:
1
2
3
4
5
6
struct option {
        const char *name;
        int has_arg;
        int *flag;
        int val;
};


Verder ziet mijn code om te struct array te initialiseren er zo uit:
C:
1
2
3
4
5
6
7
8
9
    struct option long_options[10];

    long_options={
        {"version",   0, 0, 'V'},
        {"verbose",   0, 0, 'v'},
// etcetera etcetera
        {"recursive", 0, 0, 'r'},
        {"extention", 0, 0, 'e'}
    };


In Linux compileert dit goed (met GCC), maar in Windows met VC6 geeft hij de volgende foutmelding:
main.c(244) : error C2059: syntax error : '{'
Regel 244 is hier regel 3. Als ik de volgende code gebruik compileert hij wel zonder foutmeldingen:
C:
1
2
long_options[0].name="version"
// en dit voor alle elementen

Maar dat is weer zo omslachtig. Hoe initialiseer ik het makkelijkste dit ding?

[ Voor 7% gewijzigd door Verwijderd op 28-08-2003 16:36 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Dat GCC die puntkomma op regel 4 slikt is extreem fout. VC heeft gelijk.

Professionele website nodig?


Verwijderd

Dat is echter niet het probleem, VC6 blijft zeuren ook als je de ; vervangt door een ,

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Sowieso mag deze construct alleen tijdens declaratie afaik, dus:
C++:
1
2
3
4
5
6
7
struct option long_options[10] = { 
        {"version",   0, 0, 'V'},     // Een komma dus hier
        {"verbose",   0, 0, 'v'}, 
// etcetera etcetera 
        {"recursive", 0, 0, 'r'}, 
        {"extention", 0, 0, 'e'} 
    };

Professionele website nodig?


Verwijderd

Topicstarter
Ja, foutje. Er was stiekum geen punt-komma.

Als ik de oplossing van curry probeer krijg ik de volgende foutmelding:
main.c(237) : error C2143: syntax error : missing ';' before 'type'

[ Voor 53% gewijzigd door Verwijderd op 28-08-2003 16:41 ]


Verwijderd

Topicstarter
Maar als je dan alle decleraties naar bovenaan de functie verplaatst werkt het weer.

Chaos. 8)7 Ik zit weer ongelooflijk te rotzooien.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Koop een boek :z

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.