2014-11-07 26 views
0

,但我遇到了以下錯誤:C5029(E)的預期,我一看錶工作了熱敏電阻的表達式

C5029(E)預期表達

下面是一些信息什麼環境和工具,我使用:瑞薩 -Renesas RX111微控制器 -e2studio程序環境中使用C語言 -E1調試器 - 參考:http://coactionos.com/embedded%20design%20tips/2013/10/03/Tips-ADC-Thermistor-Circuit-and-Lookup-Table/

下面是我想實現代碼:

/**********************************************************************/ 
#define TABLE_SIZE 24 

typedef struct 
{ 
    float x; 
    float y; 
} dsp_lookup_f_t; 

float dsp_lookup_f(const dsp_lookup_f_t * table, float x, int size) 
{ 
    int i; 
    float m; 
    i = 0; 

    // find the two points in the table to use 
    while((i < (size)) && (x > table[i].x)) 
    { 
     i++; 
    } 

    // make sure the point isn't past the end of the table 
    if(i == size) 
    { 
     return table[i-1].y; 
    } 

    // make sure the point isn't before the beginning of the table 
    if(i == 0) 
    { 
     return table[i].y; 
    } 

    // calculate the slope 
    m = (table[i].y - table[i-1].y)/(table[i].x - table[i-1].x); 
    // this is the solution to the point slope formula 
    return m * (x - table[i].x) + table[i].y; 
} 

dsp_lookup_f_t my_table[TABLE_SIZE] = 
{ 

    { .x= 18373 , .y= -40 }, 
    { .x= 56654 , .y= -35 }, 
    { .x= 87176 , .y= -30 }, 
    { .x= 111321 , .y= -25 }, 
    { .x= 130338 , .y= -20 }, 
    { .x= 145291 , .y= -15 }, 
    { .x= 157048 , .y= -10 }, 
    { .x= 166307 , .y= -5 }, 
    { .x= 173618 , .y= 0 }, 
    { .x= 179412 , .y= 5 }, 
    { .x= 184019 , .y= 10 }, 
    { .x= 187698 , .y= 15 }, 
    { .x= 190651 , .y= 20 }, 
    { .x= 193029 , .y= 25 }, 
    { .x= 194955 , .y= 30 }, 
    { .x= 196521 , .y= 35 }, 
    { .x= 197801 , .y= 40 }, 
    { .x= 198851 , .y= 45 }, 
    { .x= 199716 , .y= 50 }, 
    { .x= 200433 , .y= 55 }, 
    { .x= 201029 , .y= 60 }, 
    { .x= 201526 , .y= 65 }, 
    { .x= 201943 , .y= 70 }, 
    { .x= 202292 , .y= 75 } 
}; 

/**********************************************************************/ 

我遇到的問題是與表。我對設計結構不太熟悉,但我使用了前面提到的參考資料來幫助我使用此代碼。我不確定我是否錯過了某些明顯的東西,但是有沒有人有任何建議讓我指出正確的方向?我很感謝任何人提供的任何意見。

回答

0

我想通了。我只需要從表格中刪除「.x =」和「.y =」。

+2

'.x ='和'.y ='符號是C99(或C11)'指定的初始值設定項'。您可能只需啓用C99或C11編譯。如果您使用的是Microsoft系統,那麼可能需要安裝GCC--因爲GCC確實支持大部分C99,包括特定的初始化程序,但MSVC仍不支持C99的大部分 - 包括指定的初始化程序AFAIK。 – 2014-11-07 05:41:52

+0

@JonathanLeffler不幸的是,我記得,它甚至不在C11中,而是GNU C特有的。 – keltar 2014-11-07 07:56:49

+0

@keltar:你記得錯了。參見6.7.9 C11的初始化;它是C99中的6.7.8節。它不是C89/C90的一部分。 – 2014-11-07 07:58:53