答えて
(それが重要ならば推測)のVisual Studio 2008を使用しています。
I.e. #define
のファイル、または#define
のファイルを含むすべてのファイルに定義が表示されます。
あなたのコメントに答えるには:すべてのファイルに定義を取得するには、どこにもインクルードされるヘッダに入れるか、いくつかのコンパイラオプションを使用して定義を追加します。
gccの場合は
gcc -Dthedefine=itsvalue
VC++のように指定する方法がわかりませんが、どういうわけかはわかります。
それが唯一あなたがそれを定義するファイルまたはそのファイル
内の識別子のすべての後続 の出現のための#defineディレクティブ代替 トークン文字列が含まれるファイルで定義されますソースファイル。識別子は、トークンを形成するときにのみ置換される です。 コメント( リファレンスのC++トークンを参照してください)たとえば、識別子 は、 コメント、文字列、またはより長い識別子の一部の に表示される場合、置換されません。
それはグローバルではありません、「の#define」により定義され、それは単に現在のファイル/ソースの
あるシンボルは、翻訳の最後に指令の場所から見えますユニット(またはこのシンボルに最も近い "#undef")に移動します。たとえば、 "file.h"ファイル内に何かを定義すると、このシンボルは "file.h"と "file.h"を含むすべてのファイルに表示されます。
何らかのマクロあるファイルに定義されているファイルは、そのファイルにマクロが含まれている場合にのみ別のファイルに表示されるため、自動的にはグローバルではありません。一般的に、この理由から、ヘッダファイルにマクロを定義し、#include "headerFile.h"を実行できるようにする必要があります。
#define
ディレクティブは、コンパイルが完了するまで、その時点からの定義を行います。ただし、各.cppは別々のコンパイル単位としてカウントされます。
#define
作品が含まれているヘッダファイルにする必要があります。ヘッダファイルは翻訳単位間で共有すると、その可能性複数のファイルにする。
しかし、本当にグローバルにするには、Visual Studio拡張機能が必要です。/Dコマンドラインオプションを使用すると、#define
に相当するものをプリプロセッサに渡すことができ、プロジェクトのプロパティページにこれらを入れることができます。それはほぼ「それが得られるほどグローバル」です。マルチプロジェクトソリューションでは、継承したプロジェクトプロパティシートを共有することができます。
また、.vspropsファイルに裏打ちされたビジュアルスタジオのプロパティシートをセットアップして、ソリューション内の関連するプロジェクトに割り当てることもできます。
これにより、個別のソリューションファイルに含まれていても、複数のプロジェクト間で多くのタイプの共通設定を簡単に維持できます。
http://msdn.microsoft.com/en-us/library/a4xbdz1e%28VS.80%29.aspx
- 1. Cプリプロセッサ#define SQR(x)(x * x)
- 2. Cプリプロセッサ連結#defineの外
- 3. #define(Cプリプロセッサ)の配列形式
- 4. Objective-CのプリプロセッサDEFINEからローカルIPアドレスを取得できますか?
- 5. プリプロセッサC++
- 6. Cプリプロセッサ -
- 7. C/C++プリプロセッサ名前
- 8. C++プリプロセッサのデバッグ
- 9. C++プリプロセッサ変数
- 10. Cプリプロセッサforループ
- 11. Cプリプロセッサのコンセプト
- 12. C++コンパイラとプリプロセッサ
- 13. C++、プリプロセッサのステートメント
- 14. C++プリプロセッサのセミコロン
- 15. gcc define Objective C
- 16. の#define(CLASS)C++
- 17. C selective #define
- 18. C++ #define LPWSTR?
- 19. 別の#defineエラーに基づくC#define
- 20. devenvコマンドラインで#defineプリプロセッサを追加するには? devenvをコマンドラインで余分なプリプロセッサの#defineを追加する方法は
- 21. CプリプロセッサのC++実装
- 22. プリプロセッサ後のCコード
- 23. Cプリプロセッサ - 別のマクロ
- 24. はCプリプロセッサ文の
- 25. #defineからCスタイルのキャストを削除するにはどうすればプリプロセッサ#ifで使用できますか?私は、次のプリプロセッサを使用したい
- 26. Cプリプロセッサの交換が
- 27. Cプリプロセッサと "_asm _emit"ディレクティブ
- 28. プラットフォームCプリプロセッサの定義
- 29. Cプリプロセッサの演算子##
- 30. プリプロセッサの後のObjective-cコード
うーむ、どのように私はすべてのファイルにそれがグローバル作るのですか? – akif
すべてのファイルで#include "Global.h"。 – Goz
にはすべてのファイルにヘッダファイル#defineが含まれています。プリコンパイルされたヘッダーを使用することを検討してください。 – SadSido