1

デバッグおよびロギング ライブラリの場合、実行時に、プロジェクトがコンパイルおよびリンクしたすべてのソース ファイルのリストを見つけられるようにしたいと考えています。各ソース ファイルに何らかの種類のヘッダーを含めることを想定しており、プリプロセッサ __FILE__ マクロはそのファイルの文字定数を提供できるため、各ファイルからその情報を何らかの形で「ブロードキャスト」して、ランタイム機能。

問題は、これをエレガントに行う方法であり、特に C++ ではなく C から実行できるかどうかです。C++ では、おそらく、ファイル名のリストを保持するための静的ストレージを持つクラスを作成しようとします。各ヘッダー ファイルは、そのクラスのファイル ローカルな静的インスタンスを作成し、作成時に FILE ポインターなどをクラスの静的データ メンバーに、おそらくリンク リストとして追加します。

しかし、これが C で機能するとは思いません。C++ でさえ、各要素が作成されることが保証されているかどうかはわかりません。

4

9 に答える 9

2

UNIXとLinuxには標準的な方法があります- ident。IDタグを作成するすべてのソースファイルに対して、通常、バージョン管理システムによって割り当てられます(例:SVNキーワード) 。

次に、コマンドを使用して、各ソースファイルの名前とリビジョンを確認しますident。実行時にそれを行う必要がある場合は、それをどのように行うかを確認してくださいident-そのソースは自由に利用できるはずです。

于 2009-03-06T12:49:02.603 に答える
0

実行時にこれを行うのは避けたほうがよいという意見には同意しますが、C では、関数呼び出しを使用して、つまりすべてのファイルで静的変数を初期化できます。

static int doesntmatter = register( __FILE__);
于 2009-03-06T14:38:01.000 に答える