我試圖編譯一些代碼,但遇到了一些我似乎無法解決的問題。本來,我有三個錯誤,但我已經縮小到一個我無法解決的錯誤。有三個文件我正在使用:voltcon.c,mss_ace.c和mss_ace.h。我已經粘貼了以下相關代碼:錯誤#92:標識符列表參數只能在函數定義中使用
在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 <stdint.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
#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: error: #92: identifier-list parameters may only be used in a function definition
這個錯誤對我說的是它可能與我的函數的第三個參數有關。
---更新--- 該錯誤是由代碼中的最後一行(void ACE_configure_sdd之一)引起的。我對此表示歉意。 #92只是一個代碼,它並不涉及實際的代碼行。
請您指出92行(錯誤是關於)嗎? –
'voltcon.c'的最後一行沒有任何意義;它看起來像一個函數聲明,除了在參數位置有*變量*而不是*類型*之外。你當然不能在那裏調用一個函數,因爲你不在函數中。 –
我的大部分編程經驗都在MATLAB中,所以我對C. Oli有點困難,我明白你在說什麼,我想要做的是用一組特定的參數調用函數。我的理解是,mss_ace.c中的函數聲明告訴我們,我們有一個名爲ACE_configure_sdd的函數返回void,並且需要四個輸入參數(指定類型的參數)。我想要做的是用它要求的輸入來調用這個函數。 – jgau33