gcc error bei bool prototyp

Dieses Thema im Forum "C/C++" wurde erstellt von CptRick, 19.07.2008.

  1. #1 CptRick, 19.07.2008
    CptRick

    CptRick Mitglied

    Dabei seit:
    17.05.2008
    Beiträge:
    26
    Zustimmungen:
    0
    Hiho,

    ich wollte grade folgenden source mit dem gcc kompilieren:

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int get_chip_size();
    int get_ram_size();
    bool get_chip_template(int chip[], int chip_size, char path[]);
    
    int main( int argc, char * argv[] ) {
    
    	// Initializing the chip array
    	
    	int chip_size;
    
    	chip_size = get_chip_size();
    	if(chip_size == 0) return EXIT_SUCCESS ;
    
    	int chip[chip_size];
    
    	// Initializing the ram array
    
    	int ram_size;
    
    	ram_size = get_ram_size();
    	if(ram_size == 0) return EXIT_SUCCESS ;
    
    	float ram[ram_size];
    	
    	return EXIT_SUCCESS ;
    }
    
    int get_chip_size() {
    
    	int size;
    	
    	printf("\n___ Chipset size ___");
    	printf("\n|                  |");
    	printf("\n| (1) 4    Bit     |");
    	printf("\n| (2) 8    Bit     |");
    	printf("\n| (3) 16   Bit     |");
    	printf("\n| (4) 32   Bit     |");
    	printf("\n| (5) 64   Bit     |");
    	printf("\n| (6) 128  Bit     |");
    	printf("\n| (0) exit         |");
    	printf("\n|__________________|");
    
    	printf("\n\n: ");
    	scanf("%d", &size);
    	
    	while( size < 0 || size > 6 ) {
    
    		printf("\nExpecting decimal number bewtween 1 and 6!");		
    		printf("\n: ");
    		scanf("%d", &size);
    
    	}
    
    	return size;
    }
    
    int get_ram_size() {
    
    	int size;
    	
    	printf("\n_______ RAM size ______");
    	printf("\n|                     |");
    	printf("\n| number of RAM decks |");
    	printf("\n| (0) exit            |");
    	printf("\n|_____________________|");
    
    	printf("\n\n: ");
    	scanf("%d", &size);
    	
    	while( size < 0 ) {
    
    		printf("\nExpecting decimal positive number!");		
    		printf("\n: ");
    		scanf("%d", &size);
    
    	}
    
    	return size;
    }
    
    bool get_chip_template(int chip[], int chip_size, char path[]) {
    	
    	int c, i=0, temp;
    	FILE *ptr;
    
    	if( !(ptr = fopen(path[],"r") ) return FALSE ;
    
    	while ((c = fgetc(ptr)) != EOF) {
    
    		if( c != 10 || c != 27 ) { // use New Line and Space as seperator
    			
    			c -= 48;
    			if(c < 0) return FALSE ;			
    			temp = c * 10;
    	
    			if ( ((c = fgetc(ptr)) != EOF) || i > chip_size) {
    
    				c -= 48;
    				if(c < 0) return FALSE ;	
    				temp += c;
    				chip[i++] = temp;
    
    			} else {
    
    				return FALSE ;
    
    			}
    
    		}
    
    	}
    	
    	for( i = i; i == chip_size; i++ ) chip[i] = 0;
    	fclose(ptr);
    	return TRUE ;
    }
    Nun spuckt der gcc aber einen seltsamen error aus:
    Code:
    [99%+]arne@deepthought:~$ gcc -Wall -o chipset chipset.c
    chipset.c:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘get_chip_template’
    chipset.c: In function ‘main’:
    chipset.c:26: warning: unused variable ‘ram’
    chipset.c:17: warning: unused variable ‘chip’
    chipset.c: At top level:
    chipset.c:84: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘get_chip_template’
    [99%+]arne@deepthought:~$
    
    Wenn ich die Funktion mit integer deklariere kommt der error zwar nicht, aber die Funktion soll schon bool'sche Werte zurückgeben.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    C kennt doch keine bool-Werte, oder hab ich was verpasst?
     
  4. #3 CptRick, 19.07.2008
    Zuletzt bearbeitet: 19.07.2008
    CptRick

    CptRick Mitglied

    Dabei seit:
    17.05.2008
    Beiträge:
    26
    Zustimmungen:
    0
  5. #4 daboss, 19.07.2008
    Zuletzt bearbeitet: 19.07.2008
    daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    0 wird als "false" behandelt, ja, aber es gibt diesen Datentyp in C nicht als "Datentyp". Steht auch auf dem Link, den du gepostet hast ;)

    (...oder ich drück mich grad nur unglücklich aus... jedenfalls musstt du wohl oder übel bei C mit int arbeiten)
     
  6. #5 Gott_in_schwarz, 19.07.2008
    Zuletzt bearbeitet: 19.07.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Code:
    if( !(ptr = fopen(path[],"r") ) return FALSE ;
    Zähl in der Zeile mal die öffnenden und die schließenden Klammern.

    Außerdem kennt c schon bool, nur heißt es "_Bool" und nicht "bool". Die "Konstanten" TRUE und FALSE kennt c afaik jedenfalls nicht. Lieber 0 und 1 benutzen. (Und _Bool kann man eigentlich auch als int deklarieren. Der Funktionsname sollte Dokumentation genug zu sein...)

    Edit: schauste hier und auch gleich hier.

    Ich würde sagen: _Bool braucht man nicht wirklich.. integer tuns genauso. Und mit so'nem #define-Mist fang gar nicht erst an... ("#define TRUE 1" oder sowas...)
     
  7. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    _Bool ist aber auch nicht sehr ANSI, oder? (Wenn ja, wieder was neues gelernt :) )
     
  8. #7 Gott_in_schwarz, 19.07.2008
    Zuletzt bearbeitet: 19.07.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Ist c99. Steht auch in dem von mir geposteten Link. 0;

    edit: k, der gepostete Link, den ich reineditiert hab nachdem du hier geantwortet hast. Timing nennt sich sowas.
     
  9. #8 CptRick, 19.07.2008
    Zuletzt bearbeitet: 19.07.2008
    CptRick

    CptRick Mitglied

    Dabei seit:
    17.05.2008
    Beiträge:
    26
    Zustimmungen:
    0
    Super, danke!

    Ich löse es mit int.
    Dieser Defien Wust kann übel werden^^

    Code:
    #define six 1+5
    #define nine 8+1
    
    int main(void)
    {
    printf("%i", six * nine);
    return 0;
    } 
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Den Error bekam ich auch freundlich präsentiert nachdem ich den bool kram gelöscht hatte, trotzdem danke;)
     
  10. #9 der_Kay, 19.07.2008
    der_Kay

    der_Kay Doppel-As

    Dabei seit:
    28.02.2006
    Beiträge:
    140
    Zustimmungen:
    0
    Aua!
     
  11. #10 CptRick, 19.07.2008
    CptRick

    CptRick Mitglied

    Dabei seit:
    17.05.2008
    Beiträge:
    26
    Zustimmungen:
    0
    Wieso Aua?
    Man muss doch nicht zwangsweise den Speicher per malloc erweitern, ich kann doch auch erst das array initialisieren wenn ich die genaue größe kenne ...
     
  12. andy81

    andy81 von_suse_zu_arch_wechsler

    Dabei seit:
    30.03.2008
    Beiträge:
    72
    Zustimmungen:
    0
    Hier mal ein Zitat aus C von A bis Z von Jürgen Wolf

    nur soviel dazu
     
  13. #12 der_Kay, 19.07.2008
    Zuletzt bearbeitet: 19.07.2008
  14. #13 Gott_in_schwarz, 19.07.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Ist auch c99, if I'm not mistaken.

     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 CptRick, 19.07.2008
    CptRick

    CptRick Mitglied

    Dabei seit:
    17.05.2008
    Beiträge:
    26
    Zustimmungen:
    0
    Vielen Dank für die super Erklärung.

    Ich werde mich dann wohl doch wieder intensiever mit Pointern beschäftigen müssen ...
    Hätte nicht gedacht, dass verschiedene Standarts von C so weit auseinander gehen.
     
  17. #15 supersucker, 19.07.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Jetzt mal abgesehen davon, das so ein Code

    Code:
    int main( int argc, char * argv[] ) {
    
    	// Initializing the chip array
    	
    	int chip_size;
    
    	chip_size = get_chip_size();
    	if(chip_size == 0) return EXIT_SUCCESS ;
    
    	int chip[chip_size];
    
    	// Initializing the ram array
    
    	int ram_size;
    
    	ram_size = get_ram_size();
    	if(ram_size == 0) return EXIT_SUCCESS ;
    
    	float ram[ram_size];
    	
    	return EXIT_SUCCESS ;
    
    in jeder Sprache auf diesem Planeten ein Haufen Bullshit ist.

    Völliger Müll, und den Rest hab ich mir noch nicht mal angesehen.
     
Thema:

gcc error bei bool prototyp

Die Seite wird geladen...

gcc error bei bool prototyp - Ähnliche Themen

  1. postfix - fputs-error

    postfix - fputs-error: Ich hoffe, dass sich wer von euch mit postfix bzw. der Fehlermeldung auskennt. Ich habe nach dem Youtube-Video postfix eingerichtet: [MEDIA] Nun...
  2. journal commit I/O error auf SSD

    journal commit I/O error auf SSD: Hallo zusammen Habe meiner "Sun Ultra 45" (SPARC System) eine 64GB-SSD eingebaut, und dort das OS (Debian 7) installiert. In unregelmässigen...
  3. Kein Sound im Spiel - OpenAL error

    Kein Sound im Spiel - OpenAL error: Ich hab in einem Spiel leider keinen Sound. In der Konsole kommt in einer Endlosschleife immer diese Meldung: OpenAL error: 40964 (Audio_Tick...
  4. syntax error near unexpected token `&'

    syntax error near unexpected token `&': Hallo Ich habe ein Scrip angepasst bzw. erweiter und habe nun an einer Stelle ein Problem. Vor der erweiterung ist es einwandfrei...
  5. Update error für OpenSuse 12.3 für "libsolv-tools-0.3.2-2.14.1"

    Update error für OpenSuse 12.3 für "libsolv-tools-0.3.2-2.14.1": Hallo, ich kann mein OpenSuse 12.3 nicht mehr richtig updaten. beim versuch bekomme ich folgende Meldung: ( 1/23) Installing:...