Zephyrでuint64_tを扱うことがあった。
64bitの値を文字列にして渡したい。
あまり考えず、
char str[20];
snprintf(str, sizeof(str), “%” PRIu64, val64);
みたいな感じで書いた。
そうするとですな、文字列で”%lu”になってしまうのだ。
gccは、gcc-arm-none-eabi-8-2019-q3-updateを使っている。
ターゲットはnRF51822なので、Cortex-M0だ。
ここら辺を見ると%lluのようだから、最初のlだけ消えている・・・?
%luはうまくいくので、全部がダメなわけではないのだよなぁ。
コンパイラかと思っていたのだが、sprintf.cがあるのでZephyrの方かもしれない。
CONFIGを見ていると、CONFIG_MINIMAL_LIBC_LL_PRINTFというのがあった。
これをyesにすると、64bitも扱えるようになった。
まあ、普通はいらないよねぇ。。。今回も64bitで扱うけど、実際は32bitも使わないし。。。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。