(toppers-users 1833) Re: sprintfが使えない?【解決】
Ko Tanikawa
dev @ agapesystem.com
2004年 12月 1日 (水) 11:57:58 JST
谷川です,自己レスです。
色々調べてみますと,最終的な原因は, stdio.h をインク
ルードしていなかったことでした。やはりポカミスでした(T_T)
しかし,何かの役にたつかもしれませんので,以下の通り報
告させて頂きます。
1) Makefile で UTASK_LIBS = -lm -lc と書いておきさえす
れば, stdio.h はインクルードしていなくても,コンパ
イルは通ります。(逆に, Makefile にその記述がないと,
必ずコンパイルエラーとなる)これは Cygwin でも同じで
す。
2) ソースの途中で stdio.h をインクルードした場合,その
後のタスクでは, sprintf は正常に動作しますが,それ
以前のタスクでは動作しません。(エラーにもなりません)
stdio.h をソースの先頭でインクルードしておけば,何も
問題ありません。
void task1(VP_INT tskno) {
このタスクでは sprintf は動作しない。
しかし strlen は動作する。
}
//ソース途中でインクルード
#include <stdio.h>
void main_task(VP_INT exinf) {
このタスクでは sprintf 正常動作。
}
3) Cygwin + GCC では, stdio.h をインクルードしなくて
も, sprintf は正常に動作します。つまり今回のような
問題は発生しません。
以上,お騒がせいたしました。
--
dev @ agapesystem.com 谷川