5

関数はデフォルトでCでタグ付けされていることを知っています.Cで変数externを使用することも可能ですextern(他のファイルで初期化されている場合、またはextern int foo = 1;. しかしextern、C マクロは関数のように動作するので使用できますか?

4

1 に答える 1

11

C99 で何かが根本的に変更されない限り、プリプロセッサ マクロにはストレージ クラスがありません。それらを同時に定義せずに宣言することはできません。それらは、他の識別子が扱われるのと同じ方法でコンパイラによって扱われることさえありません.それらは、コンパイラが何らかの種類の名前検索を試みる前であっても、(少なくとも概念的には)発生する純粋なテキスト変換です.

于 2012-10-09T04:28:43.833 に答える