C言語では関数の宣言にも注意!
以下のようなコードで、セグメンテーションフォルトで落ちてはまった。
ビルドの時、
BTpurgePast.c:110: : passing argument 2 of BTpurgePastExec makes integer from pointer without a cast
というWarningが出てたが、ビルドはできていた。
char baseDate[9] ;
baseDate[0] = 0 ;
status = BTpurgePastExec( dbType, baseDate, testexec ) ;
-
-
- BTpurgePastExec の実装
-
int BTpurgePastExec( char dbtype, char* baseDate, int isTestExec )
{
_calcDef = BTgetCalcSystemDef() ;
int status = 0 ;
・・・
よくよく見てみると、関数の宣言と実装が食い違っていた(人が書いたコードを書き直していたのだが、宣言を書き直すのを忘れていた…)
int BTpurgePastExec( int daysago, int forcedelete, int testexec ) ;
これを、実装と合わせて修正したら、ちゃんと動いた… コンパイル時に教えてくれよ…