C / C ++プリプロセッサを使用して、ソースファイル内の行をマクロまたは何らかのコンパイル時に使用可能な値にカウントすることは可能ですか?例えば私は置き換えることができMAGIC1
、MAGIC2
かつMAGIC3
使用している場合、以下では、何とか値4を取得しますかMAGIC3
?
MAGIC1 // can be placed wherever you like before the relevant
// lines - either right before them, or in global scope etc.
foo(); MAGIC2
bar(); MAGIC2
baz(); MAGIC2
quux(); MAGIC2
// ... possibly a bunch of code here; not guaranteed to be in same scope ...
MAGIC3
ノート:
- プリプロセッサーの機能に対するコンパイラー固有の拡張は許容可能ですが、望ましくありません。
- これが、CではなくC ++の一部の助けを借りてのみ可能である場合は、これも許容されますが望ましくありません(つまり、Cで機能するものを希望します)。
- 明らかにこれは、外部プロセッサスクリプトを介してソースファイルを実行することで実行できますが、それは私が求めていることではありません。
__COUNTER__
および/またはを検索していBOOST_PP_COUNTER
ますか?
int arr[MAGIC4]
、コードの以前にカウントされたセクションの行数を言って取得するために、コンパイル時の定数として使用できるものが欲しいです。
__LINE__
があります