マクロを定義する場所はたくさんあります。マクロを自分のプロジェクトで定義すると、それらの定義位置を簡単に見つけることができます。しかし、有名なオープンソース プロジェクトについて学ぼうとすると、よく次のような質問に悩まされます。マクロのソースはどこにあるのか、その定義を取得できない場合、それらのいくつかは理解できません (たとえば、それらのいくつか)。名前から推測できます)。たとえば、apache からのいくつかのステートメント:
#if defined(__osf__) && defined(__alpha),
#elif defined(__NSIG)
私の知る限りでは、マクロの元になる可能性のある場所がいくつかあることを知っています。
- このプロジェクト自体から、いくつかのソースファイルで(これは、いくつかのツールで見つけることができるため、最も簡単です)
- 3番目のライブラリのヘッダーファイルから、grepできます
- c/c++ 標準ヘッダー ファイルから (Linux のどこにありますか?)
- OSから(Linuxのどこにありますか?)
- 構成ツールによって自動的に生成されます(苦い、わかりません)
- gcc/g++ のようなコンパイラ ツールから、またはメイクファイルでマクロを定義できます。
相談したい質問があります:
- OS で定義されたものと gcc/g++ で定義されたものを区別し、ツールによって生成されたマクロを構成するにはどうすればよいですか?それぞれに特徴がありますか?
- OSまたは標準Cまたはコンパイラによって定義されたもののソースを見つける方法は? 例:
grep
またはfind
ユーティリティの使用 __strange___
マシン全体をくまなく調べても のような 1 つのマクロが見つからない ( )とはどういう意味cd /;grep __strange___ -r
ですか?
それらを区別し、それらのソースを見つけるための原理と方法を教えてくれてありがとう!