包含语句:c ++

时间:2014-04-29 00:08:38

标签: c# c++ visual-studio include

好的,我有几行代码

#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string"
#include "windows.h"

环境是visualstudio 8,我正在学习OOP ..

到目前为止我所知道的是(从我之前的学习背景到目前为止)

  • 使用#include<iostream>将搜索文件iostream.h 标准包括图书馆
  • 使用#include"myHeader.h"将搜索执行文件所在目录中的文件myHeader.h,如果找不到,则会在标准包含库中搜索

基于此,我很困惑,我的问题是

  1. 为什么qoutes与每个标题一起使用?我相信qoutes属于本地目录中存在执行代码的标题..而这些文件是在标准的lib include文件夹中?
  2. 我应该在哪里使用qoutes或哪些不使用?
  3. 我可以看到带有几个文件的.h扩展名,并且看不到它 其他......为什么这样?
  4. 感谢承载这些愚蠢的问题..但是困惑...... :(甚至阅读不同的资料让我更加困惑,

    修改

    基于第一个答案,

    请指导我在我的情况下包含头文件的正确和最佳方式(序列,Qoutes和放置.h)

    P.S 不知道为什么,但这些文件包含正确,并且在编译器(visual studio 8)中没有出错

3 个答案:

答案 0 :(得分:2)

逐一回答你的问题:

  1. 因为编写此代码的人犯了一个错误 - 当使用引用路径而不是有角度的括号时,search order is suboptimal用于库头。您的每个示例都应该使用斜角括号。

  2. 无论何时使用库,都应使用有角度的括号,当您包含自己的标题时,应使用引号。两者之间的唯一区别是编译器将查找文件。类似的建议实际上是C ++ 11标准的一部分(16.2§7)。

  3. 因为这些文件do not have an extension。编写#include <iostream>时,编译器将搜索名为iostream的文件! (注意:这可以在其他实现中以不同方式实现,因为标题在技术上根本不必是文件。)
    大多数人同意您自己的标头应该有.h.hpp.hh解决方案 - 哪一个符合个人喜好,但应该始终如一地使用。

答案 1 :(得分:2)

#include <iostream>包含标准标题。标准头不需要是文件。它可以从数据库中检索,也可以在编译器中进行硬连线。但当然通常的实现是它是一个文件,当它是,但它很可能是一个名为“iostream”的文件,而不是一个名为“iostream.h”的文件。

引号尖括号之间的区别在于引号执行之前执行了额外的搜索(如果那不成功),执行完全相同尖括号。

实际上,按照惯例,附加搜索位于包含文件的文件夹中。


根据文件是您自己还是其他人的文件,请忽略有关使用其中一种形式的建议。

使用适合手头工作的工具。

答案 2 :(得分:-1)

实际上正如你所说,使用“”是很好的,因为当编译器在项目文件夹中找不到库时,它会在标准库中搜索它。所以对于这些标题&lt;&gt;或“”将完成这项工作,但使用&lt;&gt;对于标准库,可以缩短编译时间。

关于.h扩展名:新的C ++标准使用没有.h扩展名的库,所以当你使用<iostream.h>时,它会加载旧的标准库,当使用<iostream>时会加载新的标准库。所以我建议你使用

#include <iostream>
using namespace std;