私は、typedefのを持っている:typedef配列のインデックス作成動作が混在していますか?
typedef unsigned char MyType[2];
は、私は、関数に渡すと、結果はFAILです! 1つのバイトのインデックス作成にmain()
作品における
void f(MyType * m)
{
*m[0] = 0x55;
*m[1] = 0x66;
}
void main(void)
{
Mytype a;
a[0] = 0x45;
a[1] = 0x89;
f(&a);
}
可変a
の操作のでa
は{0x45、0x89}に等しいです。しかし、関数f
では、インデックスは2バイト(sizeof
の型)で動作します。
したがって、関数f
では、*m[1]
は実際にはメモリを範囲外に変更しています。
なぜこれは、私は何を忘れていますか?
ありがとうございました。
なぜtypedefが最初ですか? (* m)[0]は醜いです。 – sigjuice
私は、埋め込みアプリケーション用のAPIに取り組んでおり、パブリックインターフェイス用のtypedef配列を、配列サイズのプログラミングヒントとして実験しています。これは、ドキュメントを読んだり、EclipseのようなIDEを使用してdevに通知したりしています。だから、不安定さは入り口にある。 – Oliver
この質問を今ここに見るのは恥ずかしいことだ。とにかく私はそれを試してみて、それは良い考えではないと決めた。 – Oliver