Erreur n ° 92: Les parameters de liste d’identifiants ne peuvent être utilisés que dans une définition de fonction

J’essaie de comstackr du code, mais je rencontre des problèmes que je n’arrive pas à résoudre. À l’origine, j’avais trois erreurs, mais je l’ai réduite à une erreur que je n’arrive pas à résoudre. Je travaille actuellement avec trois fichiers: voltcon.c, mss_ace.c et mss_ace.h. J’ai collé le code correspondant ci-dessous:

Dans mss_ace.c

void ACE_init( void ) { /* Initialize driver's internal data. */ ace_init_flags(); /* Initialize the data structures used by conversion functions. */ ace_init_convert(); } void ACE_configure_sdd ( sdd_id_t sdd_id, sdd_resolution_t resolution, uint8_t mode, sdd_update_method_t sync_update ) { ... } 

Dans mss_ace.h

  typedef enum { SDD0_OUT = 0, /*!< Analog Module 0 Sigma Delta DAC */ SDD1_OUT = 1, /*!< Analog Module 1 Sigma Delta DAC */ SDD2_OUT = 2, /*!< Analog Module 2 Sigma Delta DAC */ NB_OF_SDD = 3 } sdd_id_t; typedef enum { SDD_8_BITS = 0, SDD_16_BITS = 4, SDD_24_BITS = 8 } sdd_resolution_t; #define SDD_CURRENT_MODE 1 #define SDD_VOLTAGE_MODE 0 #define SDD_RETURN_TO_ZERO 0 #define SDD_NON_RTZ 2 typedef enum { INDIVIDUAL_UPDATE = 0, SYNC_UPDATE = 1 } sdd_update_method_t; void ACE_init(void); void ACE_configure_sdd(sdd_id_t sdd_id, sdd_resolution_t resolution, uint8_t mode, sdd_update_method_t sync_update); 

Dans voltcon.c

  #include  #include  #include  #include  #include "../../N3V2_hardware/biarri/firmware/drivers/mss_ace/mss_ace.h" sdd_id_t this_sdd_id = SDD0_OUT; sdd_resolution_t this_sdd_resolution = SDD_16_BITS; uint8_t this_mode = SDD_VOLTAGE_MODE; sdd_update_method_t this_sdd_update_method = INDIVIDUAL_UPDATE; void ACE_init(); void ACE_configure_sdd(this_sdd_id, this_sdd_resolution, this_mode, this_sdd_update_method); 

L’erreur que je reçois est la suivante:

voltcon.c: erreur: # 92: les parameters de liste d’identificateurs ne peuvent être utilisés que dans une définition de fonction

Ce que cette erreur me dit, c’est que cela a probablement à voir avec le troisième argument de ma fonction.

— Mise à jour — L’erreur est provoquée par la dernière ligne du code (celle void ACE_configure_sdd). Mes excuses à ce sujet. Le n ° 92 n’est qu’un code, il ne fait pas référence aux lignes de code réelles.

Essayez de supprimer la déclaration de ACE_configure_sdd de voltcon.c . Comme c’est déjà là dans mss_ace.h .

Il semble que vous tentiez d’appeler ACE_configure_sdd partir de voltcon.c mais en c vous ne pouvez appeler une fonction que de l’intérieur d’une autre fonction.

Vous pouvez essayer de le faire dans voltcon.c :

 void func1() { ACE_configure_sdd(this_sdd_id, this_sdd_resolution, this_mode, this_sdd_update_method); } 

maintenant, func1 peut être appelé depuis une autre fonction de votre code ou de main () elle-même. J’espère que cela t’aides.

La dernière ligne de voltcon.c semble être la déclaration de la fonction ACE_configure_sdd, mais il n’ya pas de déclaration de type de ses variables. C’est pourquoi l’erreur “error: # 92” est sortie.