結論
C_Cpp: Intelli Sense Engine
がTag Parser
になっていたのが原因だった。
Default
にしたら直った。
環境
- Windows 10 Home (バージョン21H1)
- Visual Studio Code (バージョン1.60.2(user setup))
起きた問題
VSCodeでC++のコードを書いているときに、変数名が補完候補に出てこないことに気づいた(図1)。
また、コード内の変数にカーソルを当てると、普通はその変数の型などがポップアップされるのだが、自分の場合表示されなかった(図2)。
やったこと
そこで以下のことを行ったが、どれもうまくいかなかった。
c_cpp_properties.json
において、WSLのUbuntuに入っている/usr/bin/gccが参照できないとエラーが出ていたので、Ubuntuを初期化してみる。→ダメでした- ここによると、「WSL内のフォルダはWindowsからは参照できないのでは」ということなので、仕方なくMinGWをインストールしてここの通りに設定する。→/usr/bin/gccのエラーは消えたが変数の問題は依然として解決せず
- ここを斜め読みして拡張パックを入れる。 → ダメでした
重要な事実
ここで重要な事実に気が付いた。この問題が起こっているのはC++ファイルのみなのだ。試しにPythonのプログラムを書いてみるとちゃんとポップアップが出る(図3)。
また以下のページから、ポップアップ表示の表示・非表示を設定で切り替えられることが分かった。 https://teratail.com/questions/114891
これら2つの知見から、「VSCodeのC++設定のどれかをいじってしまった結果、問題が発生してしまっている」と判断し、設定(ファイル→ユーザー設定→設定)を確認してみた。
するとC_Cpp: Intelli Sense Engine
がTag Parser
になっていたことが発覚。これをDefault
に直したら補完(図5)、ポップアップ(図6)ともに動作が確認できた。
なぜこんな問題が起きたのか
数か月前に、VSCodeでArduinoの開発をしようとしてVSCodeの設定をいろいろ変更していたのが原因だった。結局VSCode上での開発はやめたのだが、その際に設定をもとに戻すことを怠っていた。
反省と対策
- 使用頻度の高いアプリの設定を変更する際は、変更箇所を書き残すかバックアップを取る。