Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I use #include "pch.h" instead of #include "stdafx.h" as my precompile header in Visual Studio C++?

This is my first time working with C++ and properly getting into coding. I'm following the C++ tutorials on learncpp.com and I'm using Visual Studio 2017...

In the tutorial they start off with some simple "Hello, world!" code and at top of the code they put #include "stdafx.h" along with #include <iostream>. When I replicate this code myself and try to build it, I get the error:

C1010: unexpected end of file while looking for precompiled header. Did you forget to add #include "pch.h" to your source?

When looking at my solution explorer I noticed that in their tutorial in the header and source files tab they have files called "stdafx.h" and "stdafx.cpp", but for me those files are called "pch.h" and "pch.cpp".

So I then tried renaming the #include "stdafx.h" to #include "pch.h" and the code was built and executed perfectly. So should I just stick with #include "pch.h" for the rest of my code or is this some kind of issue?

Thanks!

like image 970
Honesty_DEV Avatar asked Aug 20 '18 10:08

Honesty_DEV


2 Answers

The default precompiled headers name was stdafx.h for several years now. Lately, with VS 2017, they changed the default name the project wizard creates to pch.h. I don't know why but they did it.

You can adjust the name of the precompiled header file in the Project Properties under Configuration Properties -> C/C++ -> Precompiled Headers. You can also enable or disable the use of them there. You can even define this on a per file basis. You can even configure multiple different Precompiled Header files in one project.

So for you concrete question: There won't be any kind of issue replacing stdafx.h with pch.h in your tutorial. The tutorial is probably just older and hasn't been updated yet.

like image 146
marc40000 Avatar answered Sep 19 '22 19:09

marc40000


Try moving "#include pch.h" to the very top of the file (before any other headers).

Some compilers won't compile content before the pre-compiled header file(s) by default. This setting can be changed though.

like image 41
user3579754 Avatar answered Sep 16 '22 19:09

user3579754