1. 問題の説明
ubuntu システムでは、コードの読み取りや変更には IDE として VScode を使用するのが通例であり、VScode でプロジェクトを開いた後、通常は c_cpp_properties.json、settings.json、tasks.json などを設定する必要があります。パスを正しく設定すると、基本的にプログラム内のほとんどのエラーを解決できます。Fast-Lio コードを読むと、未定義の識別子「ROOT_DIR」というエラーがまだあることがわかりました。以下に示すように
次に、理由を分析します
プログラムを見たところ、「ROOT_DIR」はマクロであると思われますが、各ヘッダファイルにはその定義が見つかりません。最後に、以下に示すように、「ROOT_DIR」がCMakeList.txtファイルで定義されたマクロであることがわかりました。
add_definitions(-DROOT_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/\")
コンパイル中に定義されたこの種のマクロの場合、特定の *.c または *.h を含めることによって解決できないため、VScode はマクロが定義されていないというエラーを報告します。
3、解決策
以下の図に示すように、c_cpp_properties.json にマクロ定義を追加して保存すると、エラーは消えます。
{
“configurations”:[
{
"defines":[
"ROOT_DIR=***"
],
}
]
}
注: 「ROOT_DIR」を定義すると、他のエラーが発生する可能性があります。たとえば、このマクロを使用してプログラム内の文字列に値を割り当てる場合は、「ROOT_DIR=***」として定義し、任意の値を割り当てることが最善です。エラーを報告せずに vscode を非表示にするのは問題ありませんが、CMakeList で割り当てを使用する場合はとにかくコンパイルします。
参考ブログ:
カスタム プリプロセッサ定義を追加しますか? · 問題 #304 ·microsoft/vscode-cpptools (github.com)
VSCODE が C コードを読み取る -- 一部のマクロ定義で異常な問題解決が表示される_マクロ定義が認識できない_Unlimited Life Blog-CSDN Blog