3

私はオープン gl ドライバーに取り組んでおり、#define を使用して一連の定数を定義する必要があります。これらの定数の名前は、それらが表す値とともに繰り返されます。また、ハードウェア固有の別の #define によって設定された最大値によっても制限されます。可能であれば、最大値を使用してこれらの定数を定義したいと思います。

現在、私はそれらを次のように定義しています。

#define GL_MAX_TEXTURE_UNITS 24
#define GL_TEXTURE0  0
#define GL_TEXTURE1  1
...
#define GL_TEXTURE24 24

私は次の行に沿って何かをしたいと思います:

#define GL_MAX_TEXTURE_UNITS 24
#define GL_TEXTURE(SOMETRICKYMACRO)

マクロは、コンパイル時に最初のケースと同等の展開になるように定義されていますが、定数の数を変更したい場合は、GL_MAX_TEXTURE_UNITS を変更するだけで済みます。

4

1 に答える 1

1

C プリプロセッサ自体は、新しいプリプロセス ディレクティブを生成できません。このようなことをしたい場合は、ビルド プロセスの一部として別のユーティリティ (おそらくシェルまたは awk スクリプト) を使用してヘッダー ファイルを生成する必要があります。

このようなもの (プログラムで可変の値の範囲) が本当に必要な場合は、マクロ名を介して記号的にそれらを参照することは、設計上の選択として不適切であることを示している可能性があります。

于 2013-10-09T00:35:55.180 に答える