私は科学的な流体力学コードに慣れています。コードはほとんどの場合、プリプロセッサ ディレクティブを使用します。
#ifdef PARTICLES
int nghost = 5
#else
int nghost = 4
#endif
より単純な C フラグの代わりに、
int nghost = 4;
if( particlesFlag ) { nghost = 5; }
プリプロセッサ フラグの欠点は、(このフレームワークでは) 各ビルドの前に問題のセットアップごとに (ヘッダー ファイルの作成を伴う) 構成が必要になることです。これに対して、C コード フラグを使用すると再コンパイルが必要になるだけです。
このアプローチの利点は何ですか?
効率の改善は信じられないほど小さいように思えます --- 特に、このコード (たとえば) はプログラムの初期化時に 1 回しか実行されず、実際の作業はすべて異なるプロセッサ間のループで行われているなどの理由からです。