我一直在标题中看到错误消息。我拥有的C ++代码将在C ++ 98中运行,但不会在以后需要使用的任何后续C ++版本(如11或14等)中运行。
有什么想法吗?
extern _Complex float gRESAMPLE_DSSS_PAGEDCOEFS_REVERSE_CONJ_TAPS17_STEP5000KHZ_BW20MHZ_FS20MHZ[];
_Complex float gRESAMPLE_DSSS_PAGEDCOEFS_REVERSE_CONJ_TAPS17_STEP5000KHZ_BW20MHZ_FS20MHZ[187] =
{
+1.91232115e-02-0.00000000e+00i, +2.05319226e-02-0.00000000e+00i, -2.72482540e-02-0.00000000e+00i, +4.17710021e-02-0.00000000e+00i,
-6.60308301e-02-0.00000000e+00i, +1.07876487e-01-0.00000000e+00i, -1.98891580e-01-0.00000000e+00i, +6.31532013e-01-0.00000000e+00i,
+6.31532013e-01-0.00000000e+00i, -1.98891580e-01-0.00000000e+00i, +1.07876487e-01-0.00000000e+00i, -6.60308301e-02-0.00000000e+00i,
+4.17710021e-02-0.00000000e+00i, -2.72482540e-02-0.00000000e+00i, +2.05319226e-02-0.00000000e+00i, +1.91232115e-02-0.00000000e+00i,
-2.01950068e-04-0.00000000e+00i, +1.57716405e-02-0.00000000e+00i, +2.58155894e-02-0.00000000e+00i, -3.05156335e-02-0.00000000e+00i,
+4.43429612e-02-0.00000000e+00i, -6.73551857e-02-0.00000000e+00i, +1.05998978e-01-0.00000000e+00i, -1.86539873e-01-0.00000000e+00i,
+5.19834042e-01-0.00000000e+00i, +7.33756542e-01-0.00000000e+00i, -1.96507320e-01-0.00000000e+00i, +1.01235323e-01-0.00000000e+00i,
-5.93557656e-02-0.00000000e+00i, +3.57483588e-02-0.00000000e+00i, -2.17679292e-02-0.00000000e+00i, +1.41898394e-02-0.00000000e+00i,
+2.25500409e-02-0.00000000e+00i, +4.04566905e-04-0.00000000e+00i, +1.26300994e-02-0.00000000e+00i, +2.98684780e-02-0.00000000e+00i,
-3.14745754e-02-0.00000000e+00i, +4.35172319e-02-0.00000000e+00i, -6.36360645e-02-0.00000000e+00i, +9.64822844e-02-0.00000000e+00i,
};
实际上,复杂矩阵的大小实际上是187大。...我只是出于房间考虑而不粘贴它。
谢谢
标记
答案 0 :(得分:4)
_Complex float
是C的复数形式,在C ++中不应该存在。您的编译器允许它作为扩展。
1.23i
是C ++ std::complex
文字。
_Complex
和std::complex
彼此不兼容。您应该使用其中一个。
在代码中的各处将_Complex float
替换为std::complex<float>
,并将1.23i
文字(类型为std::complex<double>
)更改为1.23if
(std::complex<float>
)
或者,将1.23i
文字替换为1.23*I
(I
在complex.h
中定义)。
答案 1 :(得分:0)
C ++ 14引入了""_i
complex literal for doubles,这就是为什么您收到此错误的原因。
std::complex<float>
与_Complex float
在布局上兼容的C ++标准guarantees。
但是,使用i
意味着您有一个std::complex<double>[]
,它与_Complex float
不兼容。
如果使用后缀if
代替i
,则可以将数组定义为std::complex<float>
,与_Complex float
相同。