C语言 C2143: 语法错误: 缺 少“;”(在“*”的前面) C2059: 语法错误

typedef struct
{
  size_t sz;
  size_t nele;
  float complex *arr;
} VarCFloatComplexArray;

一段C语言,在matlab用MEX编译时出错,末尾两行

(26): error C2143: 语法错误: 缺
少“;”(在“*”的前面)
(26): error C2059: 语法错误:“*”
(27): error C2059: 语法错误:“}”

在float complex和*arr之间加一个逗号。也就是:

float complex, *arr;

 

#include <complex.h>之后,想要声明一个double 复数类的数值的话,需要使用

double _Complex a;进行声明

而不是:

double complex a;

有一个疑问,float complex,*arr 这么写是两个变量吗?如果本来的含义是复值float呢(前面有个#include <complex.h>)

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

更新:我用的编译器是 'Microsoft Visual C++ 2017 (C)'

visual studio2017的complex.h文件节选如下:

#ifndef _C_COMPLEX_T
    #define _C_COMPLEX_T
    typedef struct _C_double_complex
    {
        double _Val[2];
    } _C_double_complex;

    typedef struct _C_float_complex
    {
        float _Val[2];
    } _C_float_complex;

    typedef struct _C_ldouble_complex
    {
        long double _Val[2];
    } _C_ldouble_complex;
#endif

把问题中的float complex改为_C_float_complex可不报错了

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^