当我创建一个头文件时,我遇到了一个问题,我定义了三个结构!问题在于结构之间的依赖关系。我尝试类似于-c语法,但是在编译代码时会收到一个错误。
错误是:
/home/user/top/t2_cur/tinyos-2.x/tos/platforms/telosb/mac/tkn154/timer/Alarm32khzTo62500hzTransformC.nc:53:2:警告:#警告“警告: MAC计时不符合标准!”制造:* exe0错误1
这是我的密码:
#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变量。如果我颠倒了结构的声明,那么问题就会继续存在,还有另一个原因。
我也尝试过这样做:
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;发布于 2014-01-07 22:44:37
有时错误信息是奇怪和难以理解的,我不知道围绕着它的头,如果是这样的话。试着做一些简单的事情
typedef struct Point {
int x;
int y;
} Point;
Point vPoint;每次在程序中替换自己的类型
我认为,从上面看,在使用它之前,您需要像上面的Point那样对neurA进行类推。
发布于 2014-06-05 17:10:29
TinyOS错误消息通常不会显示错误的确切原因。但是,您的代码至少在两个方面肯定是不正确的。
首先,定义具有neurB的neurB和具有neurC的neurB是一个不能编译的递归依赖关系。您可能希望将指针用作字段:
typedef struct neurC {
neurB *in;
} neurC;其次,正如您注意到的,您不能在定义neurB之前使用它。解决方案是在开始时声明它,然后定义一个结构。为了避免混淆,我将实际类型命名为与结构不同的方式(类型名称以_t结尾)。两个结构的示例如下:
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
};https://stackoverflow.com/questions/20983367
复制相似问题