0

さて、私は以前ここで答えられた質問を復活させなければなりません。他の理由でいくつか変更を加えましたが、再び問題が発生しました。関連する詳細は次のとおりです。

volatile char RxBuffer1[NEMA_BUFFER_LENGTH];
uint32_t NEMA_TypeStart;
char NEMA_Type[10];
uint32_t len;
...

memcpy(NEMA_Type,(const char*)RxBuffer1[NEMA_TypeStart], len);

キャストすると、件名にエラーが表示されます。キャストなしで私は得る:

'memcpy'の引数2を渡すと、キャストなしで整数からポインタが作成されます

代わりにstrncpyを使用した場合も同じことが起こることに注意してください。だから私は困惑しています。memcpyがvoid*を使用していることを理解したと思いました。私は何が間違っているのですか?

4

2 に答える 2

1

にアドレスを渡す必要がありますmemcpy。私はあなたが望むと思います:

memcpy(NEMA_Type,(const char*) &RxBuffer1[NEMA_TypeStart], len);
于 2012-02-05T05:42:24.490 に答える
1

久しぶりですが、代わりにこう言う必要があると思います...

memcpy(NEMA_Type, &RxBuffer1[NEMA_TypeStart], len);

あなたも言うことができます...

memcpy(NEMA_Type, RxBuffer1 + NEMA_TypeStart, len);
于 2012-02-05T05:44:18.400 に答える