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

Function calling - complex values and pointers

本文关键字:指针 复杂 函数调用      更新时间:2023-10-16

我写了一个c++代码,调用了一个使用复数值的函数,正如你在下面看到的那样,当我编译代码时,我遇到了这个错误:"错误:从doublecomplex(*)[4][4]类型的临时函数初始化int和amp;类型的非常量引用无效"我找不到我犯错误的地方。你能帮我调试代码吗?

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;
}

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

由于CB_1初始值设定项列表以ints开头,因此您会出现错误。当它到达第二个子初始值设定项时,它将期望int,而不是_Complex值,并生成错误。