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」がハイライト表示されます。
|
|