加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在'{‘标记之前的预期表达式

发布时间:2020-12-16 04:54:15 所属栏目:百科 来源:网络整理
导读:我得到:“错误:我之前评论过的行'{‘token’之前的预期表达式.如果结构已经定义,为什么在令牌之前需要“{”.感谢您的任何帮助,您可以提供. struct sdram_timing { u32 wrdtr; u32 clktr;};int calibration(void);unsigned char read_i2c_cal(void);static
我得到:“错误:我之前评论过的行'{‘token’之前的预期表达式.如果结构已经定义,为什么在令牌之前需要“{”.感谢您的任何帮助,您可以提供.
struct sdram_timing {
    u32 wrdtr;
    u32 clktr;
};

int calibration(void);
unsigned char read_i2c_cal(void);
static unsigned int eepcal[15];

main() {
    DQS_autocalibration();
}

int calibration(void)
{
    struct sdram_timing scan_list[30];

    read_i2c_cal();
    if(eepcal[0] == 0){

       scan_list = {{eepcal[1],eepcal[2]},{-1,-1}}; // <-- PROBLEM LINE

        }
        else {
            //foo
        }

    return 0;
}

unsigned char read_i2c_cal(void) {
    eepcal[0] = 0;
    eepcal[1] = 02;
    eepcal[2] = 03;
}

解决方法

该错误是因为您不能以这种方式分配数组,这只能用于初始化它.
int arr[4] = {0}; // this works
int arr2[4];

arr2 = {0};// this doesn't and will cause an error

arr2[0] = 0; // that's OK
memset(arr2,4*sizeof(int)); // that is too

所以将此应用于您的具体示例:

struct sdram_timing scan_list[30];
scan_list[0].wrdtr = 0;
scan_list[0].clktr = 0;

或者您可以以相同的方式使用memset,但是您需要结构的大小而不是sizeof(int).这并不总是有效…但鉴于你的结构,它会.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读