好的,我有几行代码
#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
,如果找不到,则会在标准包含库中搜索基于此,我很困惑,我的问题是
感谢承载这些愚蠢的问题..但是困惑...... :(甚至阅读不同的资料让我更加困惑,
修改
基于第一个答案,
请指导我在我的情况下包含头文件的正确和最佳方式(序列,Qoutes和放置.h)
P.S 不知道为什么,但这些文件包含正确,并且在编译器(visual studio 8)中没有出错
答案 0 :(得分:2)
逐一回答你的问题:
因为编写此代码的人犯了一个错误 - 当使用引用路径而不是有角度的括号时,search order is suboptimal用于库头。您的每个示例都应该使用斜角括号。
无论何时使用库,都应使用有角度的括号,当您包含自己的标题时,应使用引号。两者之间的唯一区别是编译器将查找文件。类似的建议实际上是C ++ 11标准的一部分(16.2§7)。
因为这些文件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;