函数调用 - 复杂的值和指针

时间:2015-11-01 04:21:23

标签: c++

我编写了一个c ++代码,使用复杂的值调用函数,如下所示,当我编译代码时,我面对这个错误:"错误:int&类型的非const引用的无效初始化来自临时的双重复杂(*)[4] [4]" 我找不到我犯错误的地方。你可以帮我调试我的代码吗?

void SCMA_En (char in_bit [2], double _Complex in_cb[4][4], double _Complex *out_cw[4])
{
    if ((in_bit[0] == 0) && (in_bit[1] == 0)) {
        for  (i=0; i<4; i++) {
            out_cw[i] = in_cb[i][0];
        }
    }
    else if ((in_bit[0] == 0) && (in_bit[1] == 1)) {
        for  (i=0; i<4; i++) {
            out_cw[i] = in_cb[i][1];
        }
    }   
    else if ((in_bit[0] == 1) && (in_bit[1] == 0)) {
        for  (i=0; i<4; i++) {
            out_cw[i] = in_cb[i][2];
        }
    }
    else if ((in_bit[0] == 1) && (in_bit[1] == 1)) {
        for  (i=0; i<4; i++) {
            out_cw[i] = in_cb[i][3];
        }
    }
}

int main (int argc, char * argv[])
{

double _Complex CB_1[4][4]; 
double _Complex CB_2[4][4]; 
double _Complex CB_3[4][4]; 
double _Complex CB_4[4][4]; 
double _Complex CB_5[4][4]; 
double _Complex CB_6[4][4]; 

char En_in1[2];
char En_in2[2];
char En_in3[2];
char En_in4[2];
char En_in5[2];
char En_in6[2];

char    input_user1[1024];
char    input_user2[1024];
char    input_user3[1024];
char    input_user4[1024];
char    input_user5[1024];
char    input_user6[1024];

CB_1 = { {0, 0, 0, 0} , { -0.1815-0.1318*I, 0.6351-0.4615*I, 0.6315+0.4615*I, 0.1815+0.1318*I } , { 0, 0, 0, 0 } , { 0.7851, -0.2243, 0.2243, -0.7851} };

CB_2 = { { 0.7851, -0.2243, 0.2243, -0.7851 } , { 0, 0, 0, 0 } , { -0.1815-0.1318*I , -0.6351-0.4615*I , 0.6351+0.4615*I , 0.1815+0.1318*I } , { 0 , 0 , 0 , 0} };

CB_3 = { {-0.6351+0.4615*I , 0.1815-0.1318*I , -0.1815+0.1318*I , 0.6351-0.4615*I } , { 0.1392-0.1759*I , 0.4873-0.6156*I , -0.4873+0.6156*I , -0.1392+0.1759*I } , { 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 } };

CB_4 = { { 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 } , { 0.7851 , -0.2243 , 0.2243 ,  -0.7851 } , { -0.0055-0.2242*I , -0.0193-0.7848*I , 0.0193+0.7848*I , 0.0055+0.2242*I } };

CB_5 = { { -0.0055-0.2242*I , -0.0193-0.7848*I , 0.0193+0.7848*I , 0.0055+0.2242*I } , { 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 } , { -0.6351+0.4615*I , 0.1815-0.1318*I , -0.1815+0.1318*I , 0.6351-0.4615*I } };

CB_6 = { { 0 , 0 , 0 , 0 } , { 0.785 , -0.2243 , 0.2243 , -0.7851 } , { 0.1392-0.1759*I , 0.4873-0.6156*I , -0.4873+0.6156*I , -0.1392+0.1759*I } , { 0 , 0 , 0 , 0 } };

for (i=0; i<init_num; i=i+2) {
    En_in1[0] = input_user1[i];
    En_in1[1] = input_user1[i+1];
    SCMA_En (En_in1,CB_1, &CW_U1);
}

for (i=0; i<init_num; i=i+2) {
    En_in2[0] = input_user2[i];
    En_in2[1] = input_user2[(i+1)];
    SCMA_En (En_in2,CB_2, &CW_U2 );
}

for (i=0; i<init_num; i=i+2) {
    En_in3[0] = input_user3[i];
    En_in3[1] = input_user3[(i+1)];
    SCMA_En (En_in3,CB_3, &CW_U3);
}

for (i=0; i<init_num; i=i+2) {
    En_in4[0] = input_user4[i];
    En_in4[1] = input_user4[(i+1)];
    SCMA_En (En_in4,CB_4, &CW_U4);
}

for (i=0; i<init_num; i=i+2) {
    En_in5[0] = input_user5[i];
    En_in5[1] = input_user5[(i+1)];
    SCMA_En (En_in5,CB_5, &CW_U5);
}

for (i=0; i<init_num; i=i+2) {
    En_in6[0] = input_user6[i];
    En_in6[1] = input_user6[(i+1)];
    SCMA_En (En_in6,CB_6, &CW_U6);
}

return 0;
}

1 个答案:

答案 0 :(得分:0)

您没有正确使用初始化程序。他们需要使用变量的声明,而不是在赋值中。

您收到错误的原因是CB_1初始值设定项列表以int开头。当它到达第二个子初始化器时,它需要整数,找到_Complex值,然后生成错误。