web-dev-qa-db-ja.com

別のファイルで#define変数を外部化できますか?

たとえばabc.cには変数が含まれています

#define NAME "supreeth"

def.cの変数NAMEを外部化できますか?

12
user1295872

あなたが持っている場合 #define NAME "supreeth" abc.cでは、別のファイルに同じ名前のextern変数を確実に含めることができますdef.c、これはコンパイラに関する限りです。これら2つの間に何らかの依存関係があることを示唆している場合、その依存関係/リンクは発生しません。明らかに、このようなことをするのは混乱し、悪い考えです。

2
Sudhee

コードでは、NAMEは変数ではありません。これはプリプロセッサシンボルです。つまり、テキストNAMEは、入力内のすべての場所で文字列"supreeth"に置き換えられます。これはファイルごとに発生するため、「外部」であると話すのは意味がありません。

特定のCファイルがその#defineなしでコンパイルされた場合、NAMEの使用はそのままになります。

15
unwind

マクロでexternを使用することはできません。ただし、マクロを多くのCファイルで表示したい場合

マクロ定義を入力してください

#define NAME "supreeth"

def.hのようなヘッダーファイル内

次に、Cコードにdef.hを含めます。次に、def.hを含めると、他のすべてのCファイルのCファイルでマクロを使用できます。

13
MOHAMED