2019/09/01

[zephyr?]%lluがうまくいかない

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 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。