(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 谷川