以下のコードを見ましたthis answer〜What is your favorite C programming trick?このCトリックは何をしますか?
このコードは何をしていますか?どのように役立つのですか?
double normals[][] = {
#include "normals.txt"
};
以下のコードを見ましたthis answer〜What is your favorite C programming trick?このCトリックは何をしますか?
このコードは何をしていますか?どのように役立つのですか?
double normals[][] = {
#include "normals.txt"
};
これは、プリプロセッサを使用して配列を初期化します。
基本的には、外部テキストファイルから値を読み取って配列に値を設定するコードをインライン展開しています。
{0, 0, 1},
{0, 1, 0},
{1, 0, 0}
OMG .... "normal.txt"と "normals [] []"を読み込むのですか?はいいいえ... – hari
@hari:はい、それはそのファイルのファイル内容を使用していて、それをソース、インラインに「ダンプ」しています... –
前処理は前に実行したステップです実行時にファイルを読み込む際の混乱を避けるためにコンパイルします。 :)この「トリック」は、アプリケーションの開発時にのみ変更されるデータ(例えば、生成されたデータ)をインポートする場合に便利です。コンパイル時に、データは実行ファイルに静的にコンパイルされ、変更。 – CodeCaster
2D配列をファイル「normals.txt」の内容で初期化され、おそらく有効な含まれている:これは「normals.txtは」Cの構文に一致する値、すなわちで満たされることを必要とすることに注意してくださいCコードであり、おそらく他のコードと共有されているか、他のソフトウェアからの出力です。
プリプロセッサディレクティブ#include
を使用すると、参照するファイルの任意のコードがペーストされます。したがって、 "normals.txt"の中にあるものは、テキストが配列初期化子に収まる有効なC-構文コードとしてフォーマットされますnormals
のリスト
実際のコンパイルステップの前に前処理が行われるため、有効なCコードが作成され、normals
2Dアレイが初期化され、実際の.cファイルに多くのテキストを作成する必要がなくなります。
これは醜いコードになります。はるかにクリーンなオプションは、すべての配列の宣言を持つ.cファイルを生成するためにnormals.txtファイルを生成しているものを持つことです。
ありがとうございました。私は認めます - 私は吹き飛ばされます*。 :D – hari