Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] expected expression before 'int'

    Ciao a tutti, sto facendo un programma con scopi didattici, e ottengo 2 errori in fase di compilazione che non capisco:


    componenti.c: In function ‘main’:
    componenti.c:20: error: expected expression before ‘int’
    componenti.c:20: error: too few arguments to function ‘build_component’

    Vi posto il codice:

    funzioni.h
    codice:
    struct component {
    	
    	int ID;
    	int family;
    	int cost;
    	int length;
    	int height;
    
    };
    
    struct component build_component(int i, int f, int c, int l, int h);
    funzioni.c
    codice:
    #include "funzioni.h"
    
    struct component build_component(int i, int f, int c, int l, int h) {
    	
    	struct component scheda;
    	
    	scheda.ID = i;
    	scheda.family = f;
    	scheda.cost = c;
    	scheda.length = l;
    	scheda.height = h;
    	
    	return scheda;
    }
    componenti.c
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include "funzioni.h"
    
    int main (void) {
    	
    	int *p, id, fam, cost, lungh, alt;
    	
    	char c;
    	
    	p = calloc(1, sizeof(struct component));
    	
    	do {
    		
    		scanf("%c", &c);
    		
    		switch(c) {
    			
    			case 'c': scanf("%d%d%d%d%d", &id, &fam, &cost, &lungh, &alt);
    					  p = build_component(int id, int fam, int cost, int lungh, int alt);
    					  break;
    					  
    			case 'a': printf("prova speriamo bene\n");
    					  break;
    					  
    		}
    		
    	} while(c != 'f');
    	
    	return 0;
    		
    }
    Qualcuno saprebbe dirmi da cosa derivano?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    codice:
    build_component(int id, int fam, int cost, int lungh, int alt);
    La stai richiamando e non lo devi fare come se la dichiarassi. Togli quegli "int".
    Cmq ci sono altri errori..

    Non assegnare una struct ad un puntatore int*
    codice:
    int *p
    
    p = build_component(....
    ma dichiaralo come struct;
    codice:
    struct component p;
    EDIT:
    togliendo la calloc..
    PS: I puntatori allocati con malloc, calloc e/o successivamente rialloc si liberano con una free(<pointer>)

  3. #3
    Grazie dei suggerimenti, ho fatto come hai detto ma c'è ancora un problema:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include "funzioni.h"
    
    int main (void) {
    	
    	int id, fam, cost, lungh, alt;
    	
    	char c;
    	
    	struct component p;
    	
    	do {
    		
    		scanf("%c", &c);
    		
    		switch(c) {
    			
    			case 'c': scanf("%d%d%d%d%d", &id, &fam, &cost, &lungh, &alt);
    					  p = build_component(id, fam, cost, lungh, alt);
    					  break;
    					  
    			case 'a': printf("prova speriamo bene\n");
    					  break;
    					  
    		}
    		
    	} while(c != 'f');
    	
    	return 0;
    		
    }
    compilando:

    /tmp/cc1Deopb.o: In function `main':
    componenti.c.text+0x81): undefined reference to `build_component'
    collect2: ld returned 1 exit status

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Compili anche funzioni.c insieme a componenti.c?
    every day above ground is a good one

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    Originariamente inviato da YuYevon
    Compili anche funzioni.c insieme a componenti.c?

  6. #6
    Ok grazie compilandoli insieme funziona

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.