3 つの構造体を定義するヘッダー ファイルを作成すると問題が発生します。問題は、構造体間の依存関係です。このような c 構文を試してみましたが、コードをコンパイルするとエラーが発生します。
エラーは次のとおりです。
/home/user/top/t2_cur/tinyos-2.x/tos/platforms/telosb/mac/tkn154/timer/Alarm32khzTo62500hzTransformC.nc:53:2: 警告: #warning "警告: MAC タイミングは標準に準拠していません!" make: * [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 構造体が原因でエラーが発生します。構造体の宣言を逆にすると、別の原因で問題が解決しません。
私もこの方法で試しました:
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;