たとえば、abc.cには変数が含まれています
#define NAME "supreeth"
def.cの変数NAME
をextern できますか?
extern
マクロでは使用できません。しかし、マクロを多くの C ファイルから見たい場合は
マクロ定義を入れます
#define NAME "supreeth"
def.hのようなヘッダー ファイルで
次に、C コードに def.h をインクルードします。def.hをインクルードすると、他のすべての C ファイルの C ファイルでマクロを使用できます。
あなたのコードNAME
では変数ではありません。これはプリプロセッサ シンボルです。つまり、テキストNAME
は入力のあらゆる場所で string に置き換えられます"supreeth"
。これはファイルごとに発生するため、「外部」であると言うのは意味がありません。
特定の C ファイルがそれなしでコンパイルされた場合、#define
の使用NAME
はそのまま残ります。
#define NAME "supreeth"
abc.cにある場合、別のファイルに同じ名前のextern変数を確実に持つことができます。def.c
これは、コンパイラに関する限りです。これら2つの間の何らかの依存関係を暗示している場合、その依存関係/リンクは発生しません。明らかに、このようなことを行うのは混乱を招き、悪い考えです。