私は一般的な疑問を持っています..
静的関数のように、.Cファイル内のMACROのスコープを制限する方法はありますか?
マクロはプリプロセッサによって実行されます。プリプロセッサは、処理中のすべてのファイルを読み取り、マクロとマクロ ロジックを適用し、その結果をコンパイラに渡します。
マクロが定義されると、他のファイルであっても、マクロが参照されるすべての場所でその値が使用されます。
マクロの使用に関する詳細については、GCC のドキュメントを参照してください。
一般的な慣例は#undef
、マクロを使い終わったときです。エラーが発生しやすいですが、機能します。
マクロには、ブロック スコープはありません。
ヘッダーファイルの代わりに使用したい場所にマクロを .c ファイルに配置できます。他のファイルからアクセスすることはできません (ただし、一部のコンパイラでは .c ファイルのインクルードが許可されていますが、誰もそれを行っていません。賢明なもの)。
の使用についても後述しますが、#undef
そのマクロを頻繁に使用すると、すぐに混乱し始める可能性があります。
すべてのマクロは、マクロが定義されている翻訳単位でのみ使用できるという点で、既に静的関数に似ています。特定のマクロを使用できる領域を制限したい場合は、適切な場所に定義してください。