My Dwarf Fortress ASCII Reward: ~~@~~####,.".D",.B""
Een pointer declareer je nl als volgt:
1
2
| char* int* |
en niet
1
| *char |
Misschien neem je best eens contact op met de maker van die libs/headers.
https://fgheysels.github.io/
Dat de foutmelding over een * zeurt wil niet zeggen dat het met de *char[] te maken heeft, aangezien al die in hoofdletters geschreven identifiers waarschijnlijk #defines zijn en na preprocessing allerlei sterretjes kunnen bevatten.
Het kan zijn dat je een #include niet of niet compleet hebt waarin 1 van die #defines of type staat gedefineerd, dat kan tot gevolg hebben dat er na preprocessing iets overblijft waar de compiler niks mee kan. Dus doe even een search op je sourcefiles naar al die woorden in hoofdletters om te zien of ze netjes gedefined/gedeclareerd zijn.
[ Voor 33% gewijzigd door JeroenB op 10-12-2002 14:21 . Reden: Laatste alinea toegevoegd ]
Verwijderd
1
2
| void blah(*char[]); void blih(char*[]); |
Output compiler:
Nu jij weer... (functie blih() geeft aan hoe die typespec wel moet).blah.c:1: parse error before `*'
Ook heb ik het volgende geprobeerd:
1
| extern BCG_TYPE_NATURAL BCG_PARSE_BLAAT1 BCG_ARG_3 (int, int, BCG_TYPE_OPTION_SET); |
Welke geen syntax error gaf, en ook
1
| extern int BCG_PARSE_BLAAT1 BCG_ARG_3 (int, *char[], int); |
Welke wél een syntax error gaf.
Volgens mij ligt het toch wel aan die *char[]...
My Dwarf Fortress ASCII Reward: ~~@~~####,.".D",.B""
1
| void blah(char *naam[]); |
waar ik mee in de war was
1
| extern BCG_TYPE_NATURAL BCG_PARSEOPTION BCG_ARG_3 (int dummyint, char *dummychar[], BCG_TYPE_OPTION_SET dummydef); |
[ Voor 1% gewijzigd door JeroenB op 10-12-2002 14:44 . Reden: formatting ]
Mja, maar het zijn externe functies... (die dus in een library file staan, en worden "toegevoegd". Tenminste, zo is het mij uitgelegd)JeroenB schreef op 10 december 2002 @ 14:43:
Oei, je hebt gelijk, het is natuurlijk,
C:
1 void blah(char *naam[]);
waar ik mee in de war wasIn dat geval heeft de oorspronkelijke topicstarter ongeteste headers te pakken denk ik. Misschien dan vervangen door:
C:
1 extern BCG_TYPE_NATURAL BCG_PARSEOPTION BCG_ARG_3 (int dummyint, char *dummychar[], BCG_TYPE_OPTION_SET dummydef);
En ten tweede... Er staan ook andere functies in die header file (zonder *), waarbij ook geen argumenten namen zijn meegegeven.
[ Voor 11% gewijzigd door VyperX op 10-12-2002 14:51 ]
My Dwarf Fortress ASCII Reward: ~~@~~####,.".D",.B""
Argumentnamen in declaraties zijn optioneel, en worden zelfs strak genegeerd (je mag in implementatie en declaratie andere namen gebruiken, die van implementatie wordt gebruikt). Je fout zat 'm enkel in de verkeerde plaats van het sterretje.VyperX schreef op 10 december 2002 @ 14:50:
En ten tweede... Er staan ook andere functies in die header file (zonder *), waarbij ook geen argumenten namen zijn meegegeven.
Anyway, ik heb het nu omgeschreven naar een char** en hij klaaagt er niet meer over. Toch vaag, want *char[] lijkt mij wel een correcte definitie.... Maar goed
Nu de volgende errors zien op te lossen
My Dwarf Fortress ASCII Reward: ~~@~~####,.".D",.B""
Ik begrijp niet helemaal dat iemand eerst iets komt vragen en dan bij een duidelijke uitleg gaat zeiken over een non-issue (want het maakt niks uit of die namen er staan, alleen het geeft aan waarop het slaat tov een normale declaratie.)
Zie dan alsnog mijn voorbeeld met namen en zoek de verschillen. Daarom dus die namen, zodat je het zou snappenToch vaag, want *char[] lijkt mij wel een correcte definitie.... Maar goed
[ Voor 26% gewijzigd door JeroenB op 10-12-2002 15:05 . Reden: quote+reactie toegevoegd ]
VyperX schreef op 10 December 2002 @ 15:01:
Hmmmm... Ok..
Anyway, ik heb het nu omgeschreven naar een char** en hij klaaagt er niet meer over. Toch vaag, want *char[] lijkt mij wel een correcte definitie.... Maar goed
Nu de volgende errors zien op te lossen
Zoals reeds gezegd is *char[] geen correcte definitie.
char*[] is dat wel. Het *-tje moet nl. achter het datatype staan , en niet ervoor.
https://fgheysels.github.io/
whoami schreef op 10 december 2002 @ 15:04:
[...]
Zoals reeds gezegd is *char[] geen correcte definitie.
char*[] is dat wel. Het *-tje moet nl. achter het datatype staan , en niet ervoor.
Je hebt gelijk. My mistake.
My Dwarf Fortress ASCII Reward: ~~@~~####,.".D",.B""
Ook al zou de syntax wel goed zijn, zou dit nooit kunnen aangezien char een reserved keyword isVyperX schreef op 10 december 2002 @ 15:01:
Hmmmm... Ok..
Anyway, ik heb het nu omgeschreven naar een char** en hij klaaagt er niet meer over. Toch vaag, want *char[] lijkt mij wel een correcte definitie.... Maar goed
Nu de volgende errors zien op te lossen
Hij gebruikt hier toch geen char als variable naam?
https://fgheysels.github.io/
Niet in zijn code, wel in de tekst die ik quotewhoami schreef op 10 december 2002 @ 15:26:
* whoami snapt totaal niet wat je daarmee bedoelt.
Hij gebruikt hier toch geen char als variable naam?
https://fgheysels.github.io/
niet echt relevant vind ik dat hoor
Doet iets met Cloud (MS/IBM)
char** is ok.
char*[] is ok
char[][] is ok
*char[] is niet ok (zoals in de gequote text staat). Ik zie nergens in de door Mini-me ge-quote text wat staan dat - al mocht de syntax goed zijn - problemen kan geven omdat char een reserved word is.
https://fgheysels.github.io/
1
| void bla(char *name[]); |
Wat er dus misging zou goed kunnen gaan met een typedefinitie ervoor. Echter, dan zou het alsnog misgaan omdat char een keyword is en dus niet een variabelenaam mag zijn.
https://fgheysels.github.io/