undefined type or class 'bool' ?!?



  • Hi!
    Ich hab mir gerade mit KDEvelop nen kleines app geschrieben, aber irgendwie kennt gcc die standard datentypen nicht?!

    bash-2.05b$ make
    if gcc -DHAVE_CONFIG_H -I. -I/home/cncmasta/indexit/src -I..     -g -O2 -MT indexit.o -MD -MP -MF ".deps/indexit.Tpo" \
      -c -o indexit.o `test -f 'indexit.c' || echo '/home/cncmasta/indexit/src/'`indexit.c; \
    then mv ".deps/indexit.Tpo" ".deps/indexit.Po"; \
    else rm -f ".deps/indexit.Tpo"; exit 1; \
    fi
    In file included from indexit.c:18:
    indexit_structs.h:72: parse error before "bFirstTime"
    indexit.c:30: parse error before "bFirstTime"
    indexit.c: In function `menu':
    indexit.c:32: `bFirstTime' undeclared (first use in this function)
    indexit.c:32: (Each undeclared identifier is reported only once
    indexit.c:32: for each function it appears in.)
    indexit.c:51: `false' undeclared (first use in this function)
    indexit.c: In function `main':
    indexit.c:80: `true' undeclared (first use in this function)
    indexit.c:86:1: warning: no newline at end of file
    make: *** [indexit.o] Error 1
    bash-2.05b$
    

    irgendwo stand da noch "parser error before int" aber da ist definitiv keiner!
    hab nur stdio.h und stdlib.h included!

    greets,
    cNc



  • bool ist kein Standard-Datentyp in C. Wenn du bool, true und false verwenden willst, mußt du <stdbool.h> einbinden.



  • noch ne frage:
    so bekomm ich doch ein mehrdimensionales array oder?

    char **chDatabases = (char*)malloc(sizeof(char*) * iNumDBs);
    for(i =  0; i < iNumDBs; i++)
    			{
    				chDatabases[i] = (char*)malloc(sizeof(char) * MAX_CHAR_LENGHT);
    			}
    

    oder?

    greets,
    cNc



  • der Ansatz ist richtig. Aber du solltest beachten, dass sizeof(char) eh immer 1 zurückliefert und das man den Rückgabewert von malloc nicht casten sollte.

    BTW.
    der Standard Bool Typ ist in C (C99) _Bool in <stdbool.h> sind nur entspr. typedefs und constanten.



  • _Bool ist nur drin, weil viele alte Projekte bereits eigene bool-Typen definieren, und man die ja nicht alle wegschmeißen kann, nur weil C99 ein bool-keyword haben will. Für neue Sachen sollte man auf jeden Fall stdbool.h verwenden.

    BTW: der Cast bei malloc ist falsch. Entweder gar nicht casten (das beste), oder zum richtigen Typ, was hier char** wäre. char* ist einfach Unfug.


Anmelden zum Antworten