そこで、構造体設計で重要な、順番通りに関数(モジュール)を呼び出しているか確認する機能を
作りたいと考えました
下は実装してみて、いまのところうまくいってるのですが、どこか漏れなどないでしょうか?
もしくは、なんらかこういったライブラリがあるなどあったら教えてもらえるとうれしいです
#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;
}