CLARKYY
2021-03-27 16:19
采纳率: 100%
浏览 139

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: 语法错误:“}”

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • CSDN专家-ProfSnail 2021-03-27 16:39
    已采纳

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

    float complex, *arr;

     

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

    double _Complex a;进行声明

    而不是:

    double complex a;

    点赞 打赏 评论
  • CLARKYY 2021-03-27 17:06

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

    点赞 打赏 评论
  • 有问必答小助手 2021-03-29 11:00

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

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

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

    点赞 打赏 评论
  • CLARKYY 2021-03-29 15:39

    更新:我用的编译器是 '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可不报错了

    点赞 打赏 评论

相关推荐 更多相似问题