在Visual Studio中执行C程序时,表达式必须具有指向对象类型ERROR的指针

Kailash Mallikarjun

我试图在Visual Studio中构建以下代码,并在最后10行中得到以下错误:错误:表达式必须具有指向对象的指针类型。

有人可以看一下,告诉我这里缺少什么。

这是代码:

#include <stdio.h>
#include <math.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

struct emptyPeak
{
 unsigned int t;
 int accel;
 }peaks[10];

 struct ts0
{
   int dt;
   int N;
   float NValid;
   double t0;
   int data[36];
   int v[36];
 };

struct emptyPeakConstant
{
  int minSeparation_ms;
  int minLocalRange;
  float minRangeFraction;
  int localRangeHalfWidth_ms;
};

 int findAccExtrema()
 {
   int tStart = 10, tEnd = 5;
   unsigned int candidate_t;
   int type = 0;
   int NPeaks=2;
   int n, m, L;
   struct emptyPeak peaks;
   struct emptyPeakConstant pc;
   struct ts0 ts0copy;
   pc.minSeparation_ms = 325;          
   pc.minLocalRange=696;
   pc.minRangeFraction=0.62; 
   pc.localRangeHalfWidth_ms=250;
   if(ts0copy.dt==0 || ts0copy.N<3 || ts0copy.NValid<3)
   {
      return 0;
   }

   int findMaxima;
   if(type == 0 || type == 2)
   {
     findMaxima = 1;
    }
    else
   {
    findMaxima=0;
    }

    int findMinima;
    if(type == 1 || type == 2)
    {
       findMinima = 1;
     }
     else
     {
       findMinima=0;
      }

 L=round(pc.localRangeHalfWidth_ms/ts0copy.dt);

int minAcc=ts0copy.data[0];
int maxAcc=ts0copy.data[0];
int mnAcc=0;
int K=0;
for(n=0;n<=ts0copy.N-1;n++)
{
  if(~ts0copy.v[n])
{
  continue;
}
if(ts0copy.data[n] > maxAcc)
{
  maxAcc=ts0copy.data[n];
}
if(ts0copy.data[n] < minAcc)
{
   minAcc=ts0copy.data[n];
}
 mnAcc=mnAcc+ts0copy.data[n];
 K=K+1;
 }

  if(K==0)
  {
  return 0; // Instead of return in the matlab code
  }
  mnAcc=mnAcc/K;

  float thresholdMaxima = minAcc + pc.minRangeFraction*(maxAcc - minAcc);
  float thresholdMinima = maxAcc - pc.minRangeFraction*(maxAcc - minAcc);

  for(n=1;n<=ts0copy.N-2;n++)
  {
   candidate_t=ts0copy.t0 + n*ts0copy.dt;

   if(candidate_t<tStart || candidate_t > tEnd || ~ts0copy.v[n])
   {
    continue;
    }

   int hasMaxima;
   if(findMaxima && (ts0copy.data[n] >= thresholdMaxima) && (ts0copy.data[n]                                         >=ts0copy.data[n-1]) && (ts0copy.data[n] >= ts0copy.data[n+1]))
   {
        hasMaxima = 1;
    }
    else
    {
     hasMaxima = 0;
     }

     int hasMinima;

    if(findMinima && (ts0copy.data[n] <= thresholdMinima) && (ts0copy.data[n]  <=ts0copy.data[n-1]) && (ts0copy.data[n] <= ts0copy.data[n+1]))
    {
     findMinima = 1;
     }
     else
     {
       findMinima = 0;
     }

     if(!hasMaxima && !hasMinima)
    {
       continue;
     }

   int maxDelta = 0;

    for(m=n-L;m<=n+L;m++)
    {
      if(m<0 || m>(ts0copy.N-1))
     {
        continue;
     }

      unsigned int delta = abs(ts0copy.data[m] - ts0copy.data[n]);

    if(ts0copy.v[m] && delta > maxDelta)
    {
     maxDelta=delta;
    }
    }

if(maxDelta < pc.minLocalRange)
{
  continue;
 }

if(NPeaks == 0 || (candidate_t - peaks[NPeaks-1].t) > pc.minSeparation_ms)
{
    NPeaks=NPeaks+1;
}
else if(abs(ts0copy.data[n]-mnAcc) < abs(peaks[NPeaks-1].accel-mnAcc))
{
    continue;
}
}

peaks[NPeaks-1].t = candidate_t;
peaks[NPeaks-1].accel=ts0copy.data[n];
return NPeaks;
}
赫兹克斯

代码中存在一些问题(不一定解决实际问题)。

1)你真的想做吗

    struct emptyPeak
{
 unsigned int t;
 int accel;
 }peaks[10];

还是你的意思

struct emptyPeak
{
 unsigned int t;
 int accel;
 peaks[10];
}

2)如果您确实正确声明了上述结构,那么您是否还意味着要在函数findAccExtrema()中声明一个变量,如下所示:

struct emptyPeak peaks;

因为现在您正在对一个不是数组的结构进行操作,就好像它是一个数组一样。这可能就是为什么您看到自己存在的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

表达式必须具有指向C中对象类型的指针

来自分类Dev

“表达式必须具有恒定值” visual studio错误E0028

来自分类Dev

Visual C ++表达式必须具有恒定值

来自分类Dev

指向函数中向量的向量的指针给出“表达式必须具有指针类型”错误

来自分类Dev

错误:表达式必须具有指向对象的指针类型

来自分类Dev

表达式必须具有对象指针类型

来自分类Dev

表达式在数组中必须具有指针到对象的类型错误

来自分类Dev

“表达式必须是指向完整对象类型的指针”

来自分类Dev

“表达式必须是指向完整对象类型的指针”

来自分类Dev

错误:表达式必须具有指向类的指针

来自分类Dev

表达式必须具有指向类的指针错误

来自分类Dev

表达式必须具有指向结构或联合的指针类型?

来自分类Dev

显式调用之前的表达式必须具有指向func类型的指针

来自分类Dev

正则表达式在Visual Studio中捕获组

来自分类Dev

Visual Studio 2013中的正则表达式

来自分类Dev

SSRS中的AVG多个查找表达式(Visual Studio)

来自分类Dev

Visual Studio 2015中的正则表达式替换

来自分类Dev

在Visual Studio中测试简单的C#代码表达式

来自分类Dev

Visual Studio Winforms C#中的URL正则表达式

来自分类Dev

Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

来自分类Dev

Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

来自分类Dev

Visual Studio正则表达式查找/替换通配符

来自分类Dev

Visual Studio挂起搜索正则表达式^。* $

来自分类Dev

使用正则表达式查找的Visual Studio查找

来自分类Dev

Visual Studio中空白的正则表达式

来自分类Dev

MS Visual Studio 错误:预期的常量表达式

来自分类Dev

Visual Studio 使用正则表达式替换

来自分类Dev

如何使用正则表达式在Visual Studio 2015中查找所有初始化的类?

来自分类Dev

Visual Studio 2019 16.5+中的旧式C#和VB表达式计算器

Related 相关文章

  1. 1

    表达式必须具有指向C中对象类型的指针

  2. 2

    “表达式必须具有恒定值” visual studio错误E0028

  3. 3

    Visual C ++表达式必须具有恒定值

  4. 4

    指向函数中向量的向量的指针给出“表达式必须具有指针类型”错误

  5. 5

    错误:表达式必须具有指向对象的指针类型

  6. 6

    表达式必须具有对象指针类型

  7. 7

    表达式在数组中必须具有指针到对象的类型错误

  8. 8

    “表达式必须是指向完整对象类型的指针”

  9. 9

    “表达式必须是指向完整对象类型的指针”

  10. 10

    错误:表达式必须具有指向类的指针

  11. 11

    表达式必须具有指向类的指针错误

  12. 12

    表达式必须具有指向结构或联合的指针类型?

  13. 13

    显式调用之前的表达式必须具有指向func类型的指针

  14. 14

    正则表达式在Visual Studio中捕获组

  15. 15

    Visual Studio 2013中的正则表达式

  16. 16

    SSRS中的AVG多个查找表达式(Visual Studio)

  17. 17

    Visual Studio 2015中的正则表达式替换

  18. 18

    在Visual Studio中测试简单的C#代码表达式

  19. 19

    Visual Studio Winforms C#中的URL正则表达式

  20. 20

    Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

  21. 21

    Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

  22. 22

    Visual Studio正则表达式查找/替换通配符

  23. 23

    Visual Studio挂起搜索正则表达式^。* $

  24. 24

    使用正则表达式查找的Visual Studio查找

  25. 25

    Visual Studio中空白的正则表达式

  26. 26

    MS Visual Studio 错误:预期的常量表达式

  27. 27

    Visual Studio 使用正则表达式替换

  28. 28

    如何使用正则表达式在Visual Studio 2015中查找所有初始化的类?

  29. 29

    Visual Studio 2019 16.5+中的旧式C#和VB表达式计算器

热门标签

归档