0

いくつかのコードをコンパイルしようとしていますが、理解できない問題が発生しています。もともと3つのエラーがありましたが、解決できないものに絞り込みました。現在使用しているファイルは、voltcon.c、mss_ace.c、mss_ace.hの3つです。以下の関連コードを貼り付けました。

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:エラー:#92:識別子リストパラメータは関数定義でのみ使用できます

このエラーが私に言っているのは、おそらく私の関数の3番目の引数に関係しているということです。

---更新---エラーは、コードの最後の行(void ACE_configure_sddの行)が原因で発生します。申し訳ありません。#92は単なるコードであり、実際のコード行を参照するものではありません。

4

2 に答える 2

1

ACE_configure_sddfromの宣言を削除してみてくださいvoltcon.c。すでにそこにあるのでmss_ace.h

ACE_configure_sddから呼び出そうとしているようですがvoltcon.c、ではc別の関数の内部からしか関数を呼び出すことができません。

あなたはでこれをやってみることができますvoltcon.c

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

これで、func1は、コード内の他の関数またはmain()自体から呼び出すことができます。お役に立てれば。

于 2012-06-20T08:45:57.483 に答える
-1

voltcon.c内の最後の行は、関数ACE_configure_sddの宣言のようですが、その変数の型宣言がありません。これがエラー「エラー:#92」が出た理由です。

于 2016-03-04T08:34:37.987 に答える