Visual Studio Code - 設定 - C/C++ - #define

 クラウディア
1. 概要
2. #define を有効化
3. #define を無効化

1. 概要

 「C/C++」で、マルチプラットフォームで実行するものや、クロスコンパイラでコンパイルする際に・・・。  例えば、「Windows」と「UNIX」系でのコードのふるまいをわけるために。

#ifdef _WIN32
  HANDLE hstdin_;
  DWORD old_mode_;
#else
  struct termios cooked_;
#endif
 とかいう書き方をしますな。  「#else」より上が、「Windows」上で有効になって、下が、「Windows」以外で有効になるという寸法です。  「Visual Studio Code」では、有効になっている箇所はハイライトされていて、無効な個所は、少し暗い表示になっております。  でまぁ、「Windows」上で「Windows」のコードを書いているときは、問題ないのですが。  「Windows」上で、「Windows」以外のコードを編集したいときや、その逆を行うときは、暗い表示は見にくい。  わたしは、編集は、ほとんど「Windows」上で操作するので。  「Windows」以外のコード編集するときに、「#define」の表示を逆転させたいと思うわけです。  本ページは、下記のサイトを参考にさせていただきました。
Visual Studio Code上で #ifdef の表記が逆に表示されてしまいます」
「VSCode でクロス開発してるときに出る IntelliSense のエラーをなんとかしたい

2. #define を有効化

 有効化するのは、比較的簡単です。  「.vscode/settings.json」に。

{
    "configurations":
	[
        {

・・・	略	・・・

           "defines": [
                "_WIN32"
            ],

・・・	略	・・・

        }
    ],

・・・	略	・・・

}
 と書けば、「Windows」以外のプラットフォームで編集するときも、「#ifdef _WIN32」~「#else」がハイライト表示されます。

3. #define を無効化

 これが、ちょっとひねった設定になります。

.vscode/cross.h
 てなファイルを作成しまして(ファイル名はなんでもいい)。

#undef _WIN32
 と記述します。  「.vscode/settings.json」に。

{
    "configurations":
	[
        {

・・・	略	・・・

			"forcedInclude": [ "${workspaceFolder}/.vscode/cross.h" ],

・・・	略	・・・

        }
    ],

・・・	略	・・・

}
 と書けば。  と書けば、「Windows」上で編集するときも、「#ifdef _WIN32」~「#else」が暗く、「#else」~「#endif」がハイライト表示されます。
AbemaTV 無料体験