首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >胡枝子属( TinyOS nesC nx_struct )依赖型

胡枝子属( TinyOS nesC nx_struct )依赖型
EN

Stack Overflow用户
提问于 2014-01-07 22:32:56
回答 2查看 946关注 0票数 0

当我创建一个头文件时,我遇到了一个问题,我定义了三个结构!问题在于结构之间的依赖关系。我尝试类似于-c语法,但是在编译代码时会收到一个错误。

错误是:

/home/user/top/t2_cur/tinyos-2.x/tos/platforms/telosb/mac/tkn154/timer/Alarm32khzTo62500hzTransformC.nc:53:2:警告:#警告“警告: MAC计时不符合标准!”制造:* exe0错误1

这是我的密码:

代码语言:javascript
复制
#define PRECISION nx_float
typedef nx_struct neurA neuronA;
typedef nx_struct neurB neuronB;
typedef nx_struct neurC neuronC;

nx_struct neurB{
  neurA in[2];
  neurC out;

 PRECISION trans_value;
 PRECISION prop_value;
 PRECISION delta;

 PRECISION in_weight[2];
 PRECISION out_weight[1];
}

nx_struct neurA{
  neurB out[3];

  PRECISION trans_value;
  PRECISION delta;
  PRECISION out_weight[3]; 
}

nx_struct neurC{
 neurB in;

 PRECISION trans_value;
 PRECISION prop_value;
 PRECISION delta;

 PRECISION in_weight;
}

struct neurB在其内部声明变量neurC和neurB。如果我将neurB结构的声明放在代码中的所有其他结构之上,则错误是由neurC结构引起的,该结构在其内部声明neurb变量。如果我颠倒了结构的声明,那么问题就会继续存在,还有另一个原因。

我也尝试过这样做:

代码语言:javascript
复制
  typedef nx_struct neurA{
      neurB out[3];

      PRECISION trans_value;
      PRECISION delta;
      PRECISION out_weight[3]; 
    }neurA;

    typedef nx_struct neurC{
     neurB in;

     PRECISION trans_value;
     PRECISION prop_value;
     PRECISION delta;

     PRECISION in_weight;
    }neurC;

    typedef nx_struct neurB{
      neurA in[2];
      neurC out;

     PRECISION trans_value;
     PRECISION prop_value;
     PRECISION delta;

     PRECISION in_weight[2];
     PRECISION out_weight[1];
    }neurB;
EN

回答 2

Stack Overflow用户

发布于 2014-01-07 22:44:37

有时错误信息是奇怪和难以理解的,我不知道围绕着它的头,如果是这样的话。试着做一些简单的事情

代码语言:javascript
复制
typedef struct Point {
    int x;
    int y;
} Point;

Point vPoint;

每次在程序中替换自己的类型

我认为,从上面看,在使用它之前,您需要像上面的Point那样对neurA进行类推。

票数 0
EN

Stack Overflow用户

发布于 2014-06-05 17:10:29

TinyOS错误消息通常不会显示错误的确切原因。但是,您的代码至少在两个方面肯定是不正确的。

首先,定义具有neurBneurB和具有neurCneurB是一个不能编译的递归依赖关系。您可能希望将指针用作字段:

代码语言:javascript
复制
typedef struct neurC {
    neurB *in;
} neurC;

其次,正如您注意到的,您不能在定义neurB之前使用它。解决方案是在开始时声明它,然后定义一个结构。为了避免混淆,我将实际类型命名为与结构不同的方式(类型名称以_t结尾)。两个结构的示例如下:

代码语言:javascript
复制
typedef struct neurB neurB_t; // declaration of neurB_t as struct neurB

typedef struct neurC {
    neurB_t *in; // neurB_t is declared before, so it can be used here
} neurC_t;

struct neurB { // definition of struct neurB
    neurC_t *out; // neurC_t is declared before
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20983367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档