函数调用-复杂的值和指针
Function calling - complex values and pointers
我写了一个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
初始值设定项列表以int
s开头,因此您会出现错误。当它到达第二个子初始值设定项时,它将期望int,而不是_Complex值,并生成错误。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- 在 C 语言中使用 *&*&p 了解复杂的指针和地址运算符
- 有人可以向我解释一个复杂的函数指针类型吗C++
- 如何将复杂的指针数据作为属性放入qt-plugin-xml文件中
- 指针复杂度的排序向量
- 用指针解释复杂的类型定义
- 高级指针复杂的语法
- 复杂的指针表达式
- 函数调用-复杂的值和指针
- 如何在c++中优雅地使用智能指针来模拟复杂的生命周期
- 指向复杂<double>罪恶的指针
- 如何理解复杂的数组声明指针,以及
- 复杂设计中的Shared_ptr和逻辑指针所有权用例