错误#92:标识符列表参数只能在函数定义中使用

我正在尝试编译一些代码,但遇到了一些我似乎无法弄清楚的问题。 最初,我有三个错误,但我把它缩小到一个我似乎无法解决的错误。 我现在正在使用三个文件:voltcon.c,mss_ace.c和mss_ace.h。 我已粘贴以下相关代码:

在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 ) { ... } 

在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); 

在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); 

我得到的错误如下:

voltcon.c:错误:#92:identifier-list参数只能在函数定义中使用

这个错误对我说的是它可能与我的函数的第三个参数有关。

—更新—错误是由代码中的最后一行引起的(void ACE_configure_sdd为void)。 我为此道歉。 #92只是一个代码,它没有引用实际的代码行。

尝试从voltcon.c删除ACE_configure_sdd的声明。 因为它已经存在于mss_ace.h

看来你试图从voltcon.c调用ACE_configure_sdd但是在c你只能从另一个函数内部调用一个函数。

您可以尝试在voltcon.c执行此voltcon.c

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

现在可以从代码中的其他函数或main()本身调用func1。 希望这可以帮助。

voltcon.c中的最后一行似乎是ACE_configure_sdd函数的声明,但缺少其变量的类型声明。 这就是错误“错误:#92”出来的原因。