首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我们使用`#include“stdafx.h”而不是`#include <stdafx.h>`?

为什么我们使用`#include“stdafx.h”而不是`#include <stdafx.h>`?
EN

Stack Overflow用户
提问于 2016-05-16 15:36:04
回答 3查看 20K关注 0票数 8

来自这里,据说:

对于#include "filename",预处理程序在与包含指令的文件相同的目录中进行搜索。此方法通常用于包含程序员定义的头文件。 对于#include <filename>,预处理程序以依赖于实现的方式进行搜索,通常在编译器/IDE预先指定的搜索目录中进行搜索。此方法通常用于包括标准库头文件。

这个wiki链接建议stdafx.hvisual studio IDE预先设计的头文件。

H是一个由向导生成的文件,它描述了标准系统和特定于项目的文件,包括经常使用但很少更改的文件。 兼容编译器(例如VisualVISUAL6.0及更新版本)将预编译此文件,以减少整个编译时间。在源文件中包含"stdafx.h“之前,Visual C++将不会编译任何内容,除非未选中编译选项/Yu'stdafx.h‘(默认情况下);它假定源代码中的所有代码都已经编译完毕,并包含了该行。 在stdafx.h中的AFX代表Application。AFX是Microsoft类(MFC)的原始缩写。在默认情况下使用stdafx.h名称时,项目可以指定另一个名称。

然后

为什么我们使用#include "stdafx.h" #include <stdafx.h> 而不是#include <stdafx.h>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-16 15:39:46

一个stdafx.hstdafx.cpp对是由VS从模板生成的。它驻留在相同的目录中,其余的文件最终都会保存在同一目录中。您可能最终会为您的项目专门修改它。因此,我们使用""而不是<>,完全是因为它位于您的第一个引号所描述的同一个目录中。

票数 8
EN

Stack Overflow用户

发布于 2016-05-16 15:41:14

因为每个项目的stdafx.h是不同的。正如您所引用的,#include ""搜索当前项目的路径,这就是stdafx.h所在的位置。

使用#include <stdafx.h>将是的一个巨大的错误,因为它必须在库路径中(所有标准的库头都位于那里)。这意味着您不应该修改它,或者它始终保持不变,但是对于不同的项目,它永远不会相同。

因此,即使它是由Visual生成的,但它是特定于项目的,而不是所有的项目。

票数 4
EN

Stack Overflow用户

发布于 2018-03-28 14:43:44

通常,对于给定的包含文件名称.h,语法#include <name>保留给标准图书馆,而#include "name.h"用于用户定义的文件。在那里,“用户”可能意味着任何实现非标准特性的开发人员,比如某个特定的编译器包。

因此,预处理器按照系统设置所指定的适当路径搜索包含文件。不仅要注意括号和引号之间的差异,还要注意*.h扩展的不同用法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37257725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档