Problema con "symbol redefined first defined"

di il
7 risposte

Problema con "symbol redefined first defined"

Buongiorno,
ho un problema con la strutturazione del mio programma su diversi header file (ho inserito l'immagine per essere più chiaro).

Ho strutturato il mio programma nel seguente modo:
1)un header file di nome variabili_define.h dove ho inserito le dichiarazioni delle variabili globali e define che utilizzerò negli altri file
2)Diversi file funzioni.h e funzioni.c dove ho inserito le funzioni implementate (questi file hanno bisogno dell'header al punto 1)
3)Programma_principale.c dove utilizzo le funzioni implementate punto 2 e anche le variabili inserite nel .h al punto 1
4)Infine (trattandosi di un microcontrollore) in tutti i file dei punti precedenti ho dovuto includere un specifico header file (grandepadre.h)

Quando compilo mi da tantissimi errori del tipo symbol "var" redefined: first defined in symbol "var" redefined: first defined in
Ho fatto una ricerca ed ho trovato che bisogna inserire gli include guard, nonstante ciò però ho sempre gli stessi errori.

Non capisco dove sto sbagliando, qualcuno può darmi qualche indicazione? guardando l'immagine dovrebbe essere tutto più chiaro

Grazie in anticipo
Allegati:
24212_b4bf77a5f5700719b1370342bb6f7d7d.png
24212_b4bf77a5f5700719b1370342bb6f7d7d.png

7 Risposte

  • Re: Problema con "symbol redefined first defined"

    E' meglio fornire il codice degli include.
  • Re: Problema con "symbol redefined first defined"

    oregon ha scritto:


    E' meglio fornire il codice degli include.
    Intendi tutto il codice dei file (sono intorno alle 10.000 righe di codice) o solo la parte iniziale di codice con gli include?
  • Re: Problema con "symbol redefined first defined"

    Intendo gli include (almeno quello in cui si manifesta l'errore) e la lista iniziale con gli include.
    Senza codice come si fa a capire dove sta l'errore?

    Oppure prova replica l'errore con un piccolo progetto e posta quel codice.
  • Re: Problema con "symbol redefined first defined"

    oregon ha scritto:


    Intendo gli include (almeno quello in cui si manifesta l'errore) e la lista iniziale con gli include.
    Senza codice come si fa a capire dove sta l'errore?

    Oppure prova replica l'errore con un piccolo progetto e posta quel codice.


    L'errore si manifesta quando compilo il programma_principale.c

    grandepdre.h (nome reale F28x_Project.h), questo file è fornito dal produttore del microcontrollore (anche quelli inclusi)
    
    #ifndef F28X_PROJECT_H
    #define F28X_PROJECT_H
    
    #include "F2837xD_Cla_typedefs.h"  // F2837xD CLA Type definitions
    #include "F2837xD_device.h"        // F2837xD Headerfile Include File
    #include "F2837xD_Examples.h"    // F2837xD Examples Include File
    
    #endif  // end of F28X_PROJECT_H definition
    
    variabili.h
    
    #ifndef VARIABILI_H
    #define VARIABILI_H
    
    #include "F28x_Project.h"
    
    //==== Define generazione PWM ====
    #define DEAD_TIME 2.0                       //Microsecondi
    #define FREQUENCY_PWM 4.0   //4                //Frequenza PWM - KHz
    #define PERIODO_PWM (1000/FREQUENCY_PWM)       // microsecondi
    
    //==== Define Protezioni ====
    float LIMITE_V =650.0;
    ………….
    long int global_delta_count_b;
    
    #endif
    
    
    file delle funzioni (questo file si chiama spi_setup.c ed spi_setup.h)
    spi_setup.h
    
    void Setup_SPI();
    interrupt void start_spi(void);
    interrupt void spiaRx(void);
    interrupt void spibRx(void);
    
    spi_setup.c
    
    #include "variabili.h"
    
    void Setup_SPI();
    interrupt void start_spi(void);
    interrupt void spiaRx(void);
    interrupt void spibRx(void);
    
    void Setup_SPI()
    {
             EALLOW;
    …….
        PieCtrlRegs.PIEACK.bit.ACK6=1;       // Issue PIE ack
      }
    
    

    programma_principale.c
    
    
    #include "F28x_Project.h"
    #include "spi_setup.h"
    #include "variabili.h"
    
    void SetupADCEpwm();
    void ConfigureADC(void);
    void Init_16PWM(float dead_time, float f_Pwm, float clock_pwm); //4Pwm e PwmSoc
    
    …….
    void main(void)
    {
    ……
    }
    
  • Re: Problema con "symbol redefined first defined"

    Togli

    #include "variabili.h"

    da spi_setup.c
  • Re: Problema con "symbol redefined first defined"

    oregon ha scritto:


    Togli

    #include "variabili.h"

    da spi_setup.c
    Non posso toglierlo, perchè le funzioni in spi_setup.c hanno bisogno delle variabili dichiarate in variabili.h, infatti se lo tolgo poi mi dice che le variabili non sono definite.
  • Re: Problema con "symbol redefined first defined"

    Crea un file

    variabili.c

    in cui inserisci
    
    #include "variabili.h"
    
    float LIMITE_V = 650.0;
    long int global_delta_count_b;
    
    mentre nel file variabili.h
    
    extern float LIMITE_V;
    extern long int global_delta_count_b;
    
Devi accedere o registrarti per scrivere nel forum
7 risposte