[PIC]C18コンパイラでsprintfを使う時の注意

sprintfの第二引数で指定する文字列は、文字列定数を指定する必要があります。

OKなパターン

sprintf( TmpBuff, "test%d", 10 );



NGなパターン

char pMsg[] = "test%d";
sprintf( TmpBuff, pMsg, 10 );



これは、以下の理由に起因します。
・PICはハーバードアーキテクチャを採用している。
・文字列定数はプログラムメモリ、文字列の配列はファイルレジスタに保存される。
・sprintf()の第二引数は、プログラムメモリの番地を指定する必要がある。

というわけで、変数指定はNGです。

関連記事

コメントを残す

メールアドレスが公開されることはありません。