Help us understand the problem. What is going on with this article?

[VS2013]プリコンパイル済みヘッダを使うとIntelliSenseエラーが大量発生する問題を解決する方法まとめ

More than 3 years have passed since last update.

プリコンパイル済みヘッダ使用時に発生することがあるIntelliSenseエラーを解決する

なんとか解決したので共有します。
解決法だけ知りたい人は記事下部へどうぞ。(※私のケースですので万能法かどうかは未検証です。)

プリコンパイル済みヘッダとは

VSでビルドするとき、あるファイル内容に変更があった場合、コンパイラはそのファイルに関連するコードすべてをチェックしてコンパイルします。
小規模開発ではそれほど問題になりませんが、関連するファイルが増えてくるとビルドのたびにずらーっと列挙されるファイル名を見ながら「そんなとこ変更してないんじゃぼけえ!」と思いながらイライラする羽目になります。
irairaCompile.png
(大阪人はせっかち)

多くのファイルと関連するけれども頻繁な変更の無い安定した(=Stable)コードを、あらかじめコンパイルしておくことでコンパイル時間を短縮するのが、「プリコンパイル済みヘッダ」です。
プリコンパイル済みヘッダの詳細と、利用方法は下記サイト等を見てください。
参考:ドキドキしないプリコンパイル済みヘッダー

プリコンパイル済みヘッダを使うとIntelliSenseがコード解析に失敗して大量にエラーを出す

※人によるようです

プリコンパイル済みヘッダ使うことでコンパイル時間が短縮されるのは良いのですが、IntelliSenseがヘッダを正常に読めず解析に失敗することがあります。
似た症例:#include "stdafx.h"がエラーになる

error.png
(勘弁しちくり~)

IntelliSenseによるコード解析やエラー発見機能は便利なので使いたい。でもプリコンパイル済みヘッダも使いたい。というわけで本題です。

解決法

私の場合は下記の手順で解決しました。
リビルドだけで解決した人もいるようです。

  • プリコンパイル済みヘッダとそれを作成するcppファイル(例:stdafx.hとstdafx.cpp)をプロジェクト直下に移動する。
    • vcxprojファイルと同階層に移動します
    • 移動に伴って相対パスが変わるため必要に応じてstdafx.hを編集します
  • sdfとipchを作り直す
    • 一旦VisualStudioを閉じる
    • sdfファイルとipchフォルダを削除
    • VisualStudioを再起動する
  • リビルド
    • メニューバーのビルド(B)→リビルド(R)

詳しい検証をしていませんが、私の場合はstdafx.hとstdafx.cppをプロジェクト直下に移動したのが効いたようです。

良かった良かった。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした