web-dev-qa-db-ja.com

Visual Studio C ++でプリコンパイルヘッダーとして#include "stdafx.h"の代わりに#include "pch.h"を使用できますか?

C++を使用して適切にコーディングを始めたのはこれが初めてです。 learncpp.comのC++チュートリアルに従っています。VisualStudio 2017を使用しています...

チュートリアルでは、簡単な「Hello、world!」から始めます。コードとコードの先頭に#include "stdafx.h"#include <iostream>とともに配置します。このコードを自分で複製してビルドしようとすると、エラーが発生します。

C1010:プリコンパイル済みヘッダーの検索中に予期しないファイルの終わり。ソースに#include "pch.h"を追加するのを忘れましたか?

ソリューションエクスプローラーを見ると、ヘッダーとソースファイルタブのチュートリアルに「stdafx.h」と「stdafx.cpp」というファイルがありますが、私にとっては「pch.h」と「pch」と呼ばれています。 .cpp」。

そこで、#include "stdafx.h"の名前を#include "pch.h"に変更してみました。コードは完全にビルドされ、実行されました。それで、私のコードの残りのために#include "pch.h"に固執する必要がありますか、これはある種の問題ですか?

ありがとう!

14
Honesty_DEV

既定のプリコンパイル済みヘッダー名は、数年前からstdafx.hでした。最近、VS 2017では、プロジェクトウィザードが作成するデフォルト名をpch.hに変更しました。理由はわかりませんが、彼らはそれをしました。

[構成プロパティ]-> [C/C++]-> [プリコンパイル済みヘッダー]の[プロジェクトプロパティ]でプリコンパイル済みヘッダーファイルの名前を調整できます。また、それらの使用を有効または無効にすることもできます。ファイルごとに定義することもできます。 1つのプロジェクトで複数の異なるプリコンパイル済みヘッダーファイルを構成することもできます。

したがって、具体的な質問:チュートリアルでstdafx.hをpch.hに置き換えても問題はありません。チュートリアルはおそらく古いだけで、まだ更新されていません。

19
marc40000

「#include pch.h」をファイルの最上部(他のヘッダーの前)に移動してみてください。

一部のコンパイラは、デフォルトでプリコンパイル済みヘッダーファイルの前にコンテンツをコンパイルしません。ただし、この設定は変更できます。

3
user3579754

Learncpp.comのチュートリアルでは、Visual StudioでWindowsデスクトップWizardオプションを使用して新しいC++プロジェクトを作成するときに、インストラクターが「プリコンパイル済みヘッダー」追加オプションをオフにすることを推奨しています。ヘッダーファイルについてはまだ説明していませんが、そうすることをお勧めします。

ただし、pch.hは「新しい」stdafx.hのように見えるため、後者の代わりに前者を使用できるわけではありませんが、少なくとも「プリコンパイル済みヘッダー」のオプションを選択する場合は必要です。

2
ManuAlvarado22