如何避免 stdafx 和其他头文件
Posted
技术标签:
【中文标题】如何避免 stdafx 和其他头文件【英文标题】:How to avoid stdafx and other header files [closed] 【发布时间】:2017-09-20 21:48:44 【问题描述】:在 Visual Studio 2017 中创建新的 C++ Windows 应用程序时,我总是得到一个 stdafx.cpp 文件,以及 stdafx.h 和 targetver.h 文件。我正在参加编程入门课程,但讲师完全不赞成将这些文件包含在我们的项目中。我正在使用带有 BootCamp 的 Mac 来正确运行此编译器,并且我能够编写代码并正常运行 - 但我需要摆脱项目中包含的这些无关文件。
我的教授的建议是在最初创建项目时创建一个空项目,但这必须省略某些类型的必要库/头文件,因为我的相同代码会与“cout”之类的函数出现异常。 (构建良好)。
简单地说,我怎样才能创建一个除了我的 cpp 文件之外是空的新项目,并且表现正常?
【问题讨论】:
你的教授是对的。创建一个空项目,然后手动创建一个源文件。这比更改所有设置以删除预编译头更容易 @tadman 如果您尝试在不同的编译器上编译相同的代码,则不会 预编译的头文件可以显着减少编译时间,但这很大程度上取决于您在其中放入的内容以及如何配置它们。做错了,很容易显着增加编译时间。为了干净的可移植性,最好使用 CMake 和 Cotire 并且永远不要手动拥有#include "stdafx.h"
。
@frejil 你只需要弄清楚程序出了什么问题,也许可以调试它。预编译的头文件与它无关。
cout << "enter height" << cin
甚至不会编译,没有
【参考方案1】:
您可以创建一个新项目并禁用预编译头文件,同时请在创建时选择Empty Project
。如果您不打算创建新项目文件,可以在现有项目文件中执行此操作。要执行此操作,请执行以下操作 -
选择您的项目,使用“项目 -> 属性”菜单并转到 “配置属性 -> C/C++ -> 预编译头文件” 部分,然后将“Precompiled Header”设置更改为“Not Using 预编译头”选项。
【讨论】:
【参考方案2】:当您使用 Visual Studio 创建项目时,您可以选择“使用预编译的标头”,您可以禁用它!
NB 刚刚发现 vs2017 的新更新(15.3.5)对项目的创建做了一点改动,而且似乎只有在选择 Windows 桌面向导时才提供这个!
【讨论】:
以上是关于如何避免 stdafx 和其他头文件的主要内容,如果未能解决你的问题,请参考以下文章
预编译头文件stdafx.h-stdafx.cpp-stdafx.pch(pre-compile headfile)
1.在VC编译器下面为什么每个头文件以及源文件都要包含“stdAfx.h”,那么stdAfx.h中到底存放了什么,用来做什么?