当我创建一个定义三个结构的头文件时,我遇到了问题!问题是结构之间的依赖关系。我尝试使用这种 like-c 语法,但在编译代码时收到错误消息。
错误是:
/home/user/top/t2_cur/tinyos-2.x/tos/platforms/telosb/mac/tkn154/timer/Alarm32khzTo62500hzTransformC.nc:53:2:警告:#warning “警告: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;
}
结构体neurB 在其内部声明了变量neurC 和neurB。如果我将 neurB 结构的声明放在代码中的所有其他结构之上,则错误是由在其内部声明 neurb 变量的 neurC 结构引起的。如果我反转 struct 的声明,则问题仍然存在,原因是另一个原因。
我也尝试过这种方式:
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;