3 つの *.h ファイルがあります。
あ:
<some types>
extern sometype1 somevar1;
Bh:
<some types>
extern sometype2 somevar2;
チャンネル:
<some types>
extern sometype3 somevar3;
そして、私はDcファイルを持っています:
#include "A.h"
#include "B.h"
#include "C.h"
int freethemall()
{
TheFunctionFromAhFileForFreeingTheSomevar1Resources();
TheFunctionFromBhFileForFreeingTheSomevar2Resources();
TheFunctionFromChFileForFreeingTheSomevar3Resources();
}
このプロジェクトはある種のフレームワークです。
場合によっては、すべてのモジュール (A、B、または C) が必要ないことがあります。たとえば、A と B モジュールのみが必要な場合があります。しかし、フレームワークの初期化の構造は次のとおりです。
#include "A.h"
#include "B.h"
<Frameworkname>Init();
<do some code here>
<Frameworkname>Free();
そのため、ただ 1 つの ...Free() 関数ではなく、すべてのモジュールからすべての Free 関数を呼び出すのは非常に不快です。
#include "A.h"
#include "B.h"
<Frameworkname>Init();
<do some code here>
<Frameworkname><modulename1>Free();
<Frameworkname><modulename2>Free();
..
<Frameworkname><modulenameN>Free();
この場合、N は 2 しかありませんが、約 20 個のモジュールがあるため、それらをすべて数えるのはプログラマーに優しくありません。
freethemall() 関数を変更して、使用およびインクルードしたモジュールのデストラクタのみを呼び出すにはどうすればよいですか? Dhにはその機能が含まれており、Dhを含むモジュールがたくさんあることに注意してください
PS 必要に応じて、他のすべてのモジュールに Dh モジュールを含めることができます。
それを解決する別の方法として、最後の Delphi 言語のように、モジュールのファイナライズの前に呼び出される関数が必要です。
Unit ...
Finalization
Callme;
End.
freethemall() から呼び出す必要はありませんが、この問題を解決するための何らかのリードです。
アドバイスありがとうございます。