2

私は一般的な疑問を持っています..

静的関数のように、.Cファイル内のMACROのスコープを制限する方法はありますか?

4

6 に答える 6

3

マクロはプリプロセッサによって実行されます。プリプロセッサは、処理中のすべてのファイルを読み取り、マクロとマクロ ロジックを適用し、その結果をコンパイラに渡します。

マクロが定義されると、他のファイルであっても、マクロが参照されるすべての場所でその値が使用されます。

マクロの使用に関する詳細については、GCC のドキュメントを参照してください。

于 2012-04-04T03:46:00.880 に答える
3

一般的な慣例は#undef、マクロを使い終わったときです。エラーが発生しやすいですが、機能します。

マクロには、ブロック スコープはありません。

于 2012-04-04T03:47:49.070 に答える
2

ヘッダーファイルの代わりに使用したい場所にマクロを .c ファイルに配置できます。他のファイルからアクセスすることはできません (ただし、一部のコンパイラでは .c ファイルのインクルードが許可されていますが、誰もそれを行っていません。賢明なもの)。

の使用についても後述しますが、#undefそのマクロを頻繁に使用すると、すぐに混乱し始める可能性があります。

于 2012-04-04T03:42:04.930 に答える
2

すべてのマクロは、マクロが定義されている翻訳単位でのみ使用できるという点で、既に静的関数に似ています。特定のマクロを使用できる領域を制限したい場合は、適切な場所に定義してください。

于 2012-04-04T03:51:45.560 に答える