LoginSignup
8
10

More than 3 years have passed since last update.

VSCodeでbits/stdc++.hが認識されないときの対処法(競プロ)

Posted at

概要

VSCodeでC++のAtCoder環境を整備していたときに、bits/stdc++.hが認識されなかったときの対処法のメモ。

環境

Windows10

Visual Studio Codeで競プロ環境構築(導入編)で環境構築。

状況

以前にVisual Studio Codeで競プロ環境構築(導入編)で環境構築を行ったが、久しぶりにVSCodeを開いてみたところ、#include <bits/stdc++.h>で「IncludePathを更新してください」と怒られた。コンパイルは通るのでGCCではなく、VSCode側の問題のようだ。

解決方法

c_cpp_properties.jsonのIncludePathにbitsのパスを追加。

  • 「Ctrl + Shift + P」でコマンドパレットを開く。
  • 「C/Cpp: Edit configurations...」を選択。
  • includePathにbitsのパスを追加。
c_cppproperties.json
"includePath": [
    "${workspaceFolder}/**",
    "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/include/bits/*" // この行を追加
],

※「.vscode」フォルダの中に 「c_cpp_properties.json」ファイルが作成される。
「.vscode」というフォルダが無い場合は、プロジェクトフォルダ直下に自動で作成される。

bitsのパスに「stdc++.h」ファイルを追加。

stdc++.hの内容はここから。

stdc++.h
// C++ includes used for precompiling -*- C++ -*-

// Copyright (C) 2003-2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/** @file stdc++.h
 *  This is an implementation file for a precompiled header.
 */

// 17.4.1.2 Headers

// C
#ifndef _GLIBCXX_NO_ASSERT
#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>

#if __cplusplus >= 201103L
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif

// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>

#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif

まとめ

該当部分の波線エラーを消すことができた。
そもそも何で波線エラーがでてしまったのかは不明のまま。

参考

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10