関数が順番通りに呼ばれているかプログラム内で確認する
Posted: 2010年4月24日(土) 06:59
最近はオブジェクト指向が流行ってますが、私は構造体設計でいこうかとしてます
そこで、構造体設計で重要な、順番通りに関数(モジュール)を呼び出しているか確認する機能を
作りたいと考えました
下は実装してみて、いまのところうまくいってるのですが、どこか漏れなどないでしょうか?
もしくは、なんらかこういったライブラリがあるなどあったら教えてもらえるとうれしいです
そこで、構造体設計で重要な、順番通りに関数(モジュール)を呼び出しているか確認する機能を
作りたいと考えました
下は実装してみて、いまのところうまくいってるのですが、どこか漏れなどないでしょうか?
もしくは、なんらかこういったライブラリがあるなどあったら教えてもらえるとうれしいです
#include <stdio.h> static int stack[10]; static int p; // Step1 -> 1 // Step2 -> 2 // Step3 -> 3 //----------------------------------------------------- // check // 前回呼ばれた関数のIDがいっこまえのものか確認する bool check( int back ) { if( p == 0 ) { printf( "スタックが空です\n" ); return false; } if( p == 1 ) { if( stack[p-1] == 1 ) return true; else return false; } if( stack[p-2] == back ) return true; return false; } //-------------------------------------------------------- // スタックに保存する void add( int NEW ) { stack[p++] = NEW; } void Step3() { add( 3 ); // この関数のIDを登録する if( !check( 2 ) ) // 前回のIDを確認する printf( "call error.\n" ); else printf( "Step3\n" ); } void Step2() { add( 2 ); // この関数のIDを登録する if( !check( 1 ) ) // 前回のIDを確認する printf( "call error.\n" ); else printf( "Step2\n" ); } void Step1() { add( 1 ); // この関数のIDを登録する if( !check( 0 ) ) // 前回のIDを確認する printf( "call error.\n" ); else printf( "Step1\n" ); } //----------------------------------------------------- int main() { Step1(); Step2(); Step3(); Step2(); Step1(); Step3(); return 0; }