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 ) ;

これを、実装と合わせて修正したら、ちゃんと動いた… コンパイル時に教えてくれよ…