質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.34%

VSCode vectorやstringの文字色が白色になるのはデフォルトですか?

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 5,767

score 257

状況説明

イメージ説明

std::vector
上の画像ではvector の文字色が白色ですが、以前はstdの文字色と同じ緑色だったはずなのですが元に戻せません。
別件で拡張機能の削除やVSCode自体を再インストールした経緯で何かしらの設定が変わったのかもしれません。

勘違いかもしれないので検索してみたところイメージ説明 やはり緑色で表示されていました。

質問

何かしらの設定で元に戻すことは可能なのでしょうか?
またvectorやstringの文字色が白色になるのはデフォルトなのでしょうか?

試したこと

拡張機能やVSCodeの再インストール。
テーマの変更や配色の変更は(はっきりと覚えていませんが)してなかったはずです。

追記1
もう一度全て削除して再インストールしたのですが、インテリセンスも以前のように効果が無いので無意識のうちにあれこれ設定を変更していて、元に戻せていないような気がします。

自分でも状況がよく分かっていないのですが整理すると・・・
1.配色やテーマによる設定なのかどうか
2.拡張機能のインテリセンスを動作させる設定からの影響なのか
3.#include <bits/stdc++.h>を利用していてinclude関連で認識していないのかどうか
1はクリーンインストール直後なので既定値のはずで、
2も拡張機能入れた直後なので既定値のはずで、
3のinclude関連のpathがうまく認識出来ていないのか調べてるとこです

以前と色の変化や動作が違うので違和感があるので納得のゆく設定を模索してるところです。
以前の設定にこだわらず快適な環境も模索しています。

現状の拡張機能と表示
イメージ説明
(偶然発見、関数の戻り値の型の部分はちゃんと緑色になっている)

追記2
イメージ説明
イメージ説明
クリーンインストール(3回目)直後の空フォルダに白紙からファイル作成して確認。
#include <bits/stdc++.h>にするとvectorの色が無い。
#include <vector>にするとvectorの色が緑色になる。

拡張機能は日本語とc/c++intellisenseのみ。

とりあえずデフォルトでは色があることが分かったので、#include <bits/stdc++.h>を使った場合に認識する方法を模索してみます。無理そうなら時間掛かるだけなのでこのまま妥協しても仕方ないかもしれません。

追記3
#include <bits/stdc++.h>とインテリセンスの両立がどうしても出来ないので、
とりあえず妥協してコード書いている時は#include <vector>を使うようにしておきます。

追記4
直接関係ないかも知れませんが試したことを箇条書きで残しておきます。

イメージ説明
設定のC_Cp:IntelliSenseEngineFallback = Default になっていないと緑色にならない。

イメージ説明
includePathをフルパスで指定しても変わらず。

開発環境

Win10 (10.0.18362)
VSC1.48.2
C++14
gcc version 10.2.0 (Rev1, Built by MSYS2 project)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mjk

    2020/09/01 20:57

    白色に慣れるようにします。(時間掛けすぎて反省してます)

    キャンセル

  • Daregada

    2020/09/01 23:14

    こちらでは、「Dark (Visual Studio)」や「Light (Visual Stduio)」だと文字色は黒/白(色が変わらない)ですが、「Dark+ (default dark)」や「Light+ (default light)」だと文字色は緑/暗めのシアンが付いていますね。

    キャンセル

  • mjk

    2020/09/01 23:21

    色々調べてくださってありがとうございました。
    path絡みだと思ったのですがこれ以上時間掛けても堂々巡りなので白に慣れるようにします。

    キャンセル

回答 2

checkベストアンサー

+1

ええと、c_cpp_properties.jsonincludePathに、bitsが存在するフォルダーのパスを追加すると、インテリセンスも配色もうまく行っているように見えます。

"includePath": [
            "${workspaceFolder}/**",
            "(bitsの親フォルダーのフルパス)/**"
        ],

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/09/01 20:55

    Daregadaさん調べてくださりありがとうございます。
    #include <bits/stdc++.h>を使うこと自体があまりおすすめもされていない使い方のようですし(競プロ除く一般論)、stdが緑で::vectorが白でも標準的だと聞いたので、それに慣れる方が良いと思いました。
    Daregadaさんの回答でうまくいっているということでBAとして、質問はクローズさせて頂きます。

    キャンセル

  • 2020/09/02 14:50

    追伸:取り急ぎ回避策を見つけましたのでご報告しておきます。回答に追記しておきます。
    c_cpp_properties.jsonを使用しない=includePathを指定しない状況でvectorが緑色になりました。

    キャンセル

  • 2020/09/02 16:55

    ↑訂正。回答を書いている最中に別の原因を見つけましたので詳細は回答を御覧ください。

    キャンセル

0

vectorの文字色が白色に慣れるということで一応妥協していたのですが・・・
コード内に未定義変数があれば本来なら赤色波下線で警告が出るはずが無反応だったのでIntellisenseが機能していないと思い何度目かの再インストールをしました。

結論:

※この回答を書いている最中に別の原因を発見しました。
イメージ説明

vectorの文字が緑色になる
C/C++ for Visual Studio Code (C/C++ Intellisense)のバージョンがv.0.29.0

vectorの文字が白色になる
C/C++ for Visual Studio Code (C/C++ Intellisense)のバージョンがv.0.30.4

デフォルトは手動更新のはずですが、自動更新にすると最新のバージョンがv.0.30.4になります。
最新版から下位バージョンにもどすには拡張機能の設定ボタンから違うバージョンをインストールから出来ます。ただし自動更新の設定になっていると無限ループなので自動更新の設定をしないでおく必要があります。
(ドハマリするはずです)

残る課題

バージョンがv.0.29.0
バージョンがv.0.30.4
※この切り分け結果だけを見ると
c_cpp_properties.jsonで指定したIncludePathは無関係なのか?という疑問が残ります。
下記再現性の確認で試した内容ではc_cpp_properties.jsonを使っておらずIncludePathでpathを指定していません。
何かしらのデフォルト設定を参照した結果v.0.29.0では緑色となり、
v.0.30.4では白色、つまりIncludePathなのか何かしらのpath参照が出来ていないということではないかと推測しています。

回避策としてvectorを緑色で使いたければv.0.29.0のまま使えば良いと思います。

v.0.30.4ではvectorが白色なのでこれを緑色にしたければ何かしらの設定が必要だと思いますが、それはDaregadaさんの回答にある設定が肝になりそうです。
IncludePath#include <bits/stdc++.h>Intellisenseの何かしらの設定が関連していると思われますがここに戻ると堂々巡りになってしまいました・・・

なので回避策のv.0.29.0を使いつつv.0.30.4での設定方法を時間のある時に手探りしてみるつもりです・・・

追記:
v.0.30.4だとvectorが白色なだけでなく未定義変数の警告が出ないなどのIntellisenseの機能が働いていませんので使い物にならない状態になります。

#再現性の確認

参考:VS Codeをアンインストールするには

何らかの都合でVS Codeアンインストールするときには、VS Codeだけをアンインストールする方法と、設定や拡張機能まで削除する方法がある。
上記の手順でアンインストールされるのは、VS Code本体だけとなる。アンインストール後にVS Codeをもう一度インストールすると、以前に行ったユーザー設定や以前にインストールした拡張機能が復活する。


◇アンインストール
1.VSCodeをアンインストール
2.workvs(任意の作業フォルダ)内の.vscodeフォルダを_vscode_oldにリネーム(設定をバックアップ)
3.VSCodeインストールフォルダを丸ごと削除
4.C:\Users\<ユーザー名>\.vscodeフォルダを丸ごと削除
5.C:\Users\<ユーザー名>\AppData\Roaming\Codeフォルダを丸ごと削除

◇再インストール
1.VSCodeをインストール
2.拡張機能Japanese Language Pack for VS Codeをインストール (日本語化)
3.拡張機能C/C++ for Visual Studio Codeをインストール (Intellisense)
4.VSCode再読み込み

◇C/C++ Intellisenseの自動更新設定確認方法
"C_Cpp.updateChannel": "Default" デフォルト=手動更新
"C_Cpp.updateChannel": "Insiders" 自動更新

"Insider" に設定すると、拡張機能の最新の Insider ビルドが自動的にダウンロードされてインストールされます。これには、次期バージョンの機能とバグ修正が含まれています。

◇動作確認
1.フォルダを開く→workvsフォルダ(任意の作業フォルダ)
2.workvsフォルダ配下で適当な新規ファイルを作成(画面ではqa_.cpp)
3.vectorが緑色になっていることを確認
4.hogehogehoge変数が未定義なので赤い波下線が出てIntellisenseが機能していることを確認


補足:
旧環境(作業フォルダ_vscode_old)から各ファイルをコピーしてコンパイル成功を確認
workvs\.vscode\launch.json
workvs\.vscode\tasks.json

※コンパイルするだけならIncludePathは無関係。
c_cpp_properties.jsonは未使用でIncludePathを指定していないという切り分け。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る