在c ++中使用和包含有什么区别?

时间:2013-03-20 15:28:38

标签: c++

我知道include用于类和使用是为了一些内置的东西,比如命名空间std ......当你包含一些东西时,你可以创建对象并玩它们,但当你“使用”某些东西时,那么你可以使用某种内置函数。但那么我应该如何创建自己的“库”,我可以“使用”?

3 个答案:

答案 0 :(得分:5)

简单地说#include告诉预编译器简单地将包含的头文件的内容复制并粘贴到当前翻译单元。它由预编译器评估。

虽然using directive指示编译器将来自另一个范围的符号名称带入当前范围。这基本上是由编译器实现的。

  

但是,我应该如何创建自己的“库”,我可以“使用”?

命名空间是用于防止符号名称冲突的东西。通常,每个库实现者都将其功能包含在一个或多个名称空间中。

答案 1 :(得分:2)

'include'基本上将文件的值复制粘贴到“include”行的位置。这用于使您的源代码(通常是.c文件)知道其他源代码的声明(通常位于.h文件中)。

'using'基本上告诉编译器在下一个代码中你正在使用某些东西(通常是命名空间),所以你不必每次都明确地这样做:

而不是:

std::string a;
std::string b;
std::string c;

你可以写:

using namespace std;
string a;
string b;
string c;

答案 2 :(得分:0)

您可以说两者都提供了相同的功能,但是#include不是由编译器完成的,而使用是由编译器完成的。在#include中,所有代码都放置在文件中,在其中给出#include,其中,命名空间给出了从一个作用域到另一个作用域的函数和变量的定义。如果您在两个头文件中都具有相同名称的函数,并且都包含它们,那么将存在重新声明错误,但是如果它们来自不同的命名空间,则可以使用相同名称的函数。