2012-06-20 25 views
0

我試圖編譯一些代碼,但遇到了一些我似乎無法解決的問題。本來,我有三個錯誤,但我已經縮小到一個我無法解決的錯誤。有三個文件我正在使用: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只是一個代碼,它並不涉及實際的代碼行。

+1

請您指出92行(錯誤是關於)嗎? –

+2

'voltcon.c'的最後一行沒有任何意義;它看起來像一個函數聲明,除了在參數位置有*變量*而不是*類型*之外。你當然不能在那裏調用一個函數,因爲你不在函數中。 –

+0

我的大部分編程經驗都在MATLAB中,所以我對C. Oli有點困難,我明白你在說什麼,我想要做的是用一組特定的參數調用函數。我的理解是,mss_ace.c中的函數聲明告訴我們,我們有一個名爲ACE_configure_sdd的函數返回void,並且需要四個輸入參數(指定類型的參數)。我想要做的是用它要求的輸入來調用這個函數。 – jgau33

回答

1

嘗試從voltcon.c刪除ACE_configure_sdd的聲明。因爲它已經在mss_ace.h

看起來你試圖從voltcon.c撥打電話ACE_configure_sdd,但在c你只能從另一個函數裏面調用一個函數。

您可以嘗試在voltcon.c這樣做:

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

現在FUNC1可以從一些其他的功能,在你的代碼或主()本身被調用。 希望這有助於。

-1

voltcon.c中的最後一行似乎是ACE_configure_sdd函數的聲明,但它缺少其變量的類型聲明。這就是爲什麼錯誤「錯誤:#92」出來了。

相關問題