2010-12-27 6 views
1

私はこのようなCヘッダファイルを有していますES1Renderer.mスプライトインスタンスを作成します。 ES1Rendererのレンダリングメトンでは、このインスタンスのdrawメソッドを呼び出し、g_count変数は通常描画メソッドでカウントされます(drawの6つのg_addVertex(...)関数呼び出し後の値6)iPhoneのObjective-Cのグローバル変数の異なる値

g_flush()のg_count変数の値は0です。 これは、6つのg_addVertex()の後の6にする必要があります。 Spriteクラスの描画メソッド。

助けてください私はなぜg_countが0に変わるのかわかりません。私はその値を変えるところで他の機能や何かがないのです。

+0

g_flushメソッドには、g_countを0に設定することができます。 –

+0

g_flushの最初の行はNSLog(@ "count:%d"、g_count)です。そして、デバッグ時にカーソルをg_countに移動すると6に表示されますが、プログラムがg_flush()に入ると0になります(g_count = 0;実行) – Dav1d

+0

カーソルを移動するとNSLogのg_count変数(@ count:%d "、g_count);それは0を示しています。しかし、静的行のg_countにカーソルを移動すると、int g_count = 0; Renderer.hでは6と表示されます...同じグローバル変数の場合、どうして同じではないのですか? – Dav1d

答えて

6

固定変数は、ではなく、グローバルです。静的変数はのファイルスコープの内部リンケージを持っているので、ヘッダーを含む各ファイルは独自のg_countを取得します。グローバル変数が必要な場合は、1つの実装ファイルにint g_countと書いて、そのグローバル変数を使用する他のファイルがインポートするヘッダにextern int g_countを入れてください。

+0

ありがとう! – Dav1d

関連する問題