在哪里放置std_lib_facilities.h头文件?

时间:2017-07-15 23:07:47

标签: c++ header

我刚刚开始编程并使用Stroustrup的书:"编程:使用C ++的原理和实践(第二版)"并且无法弄清楚这个std_lib_facilities.h需要为Linux用户带来什么。我发现他只为使用Visual Studios的Windows用户提供帮助,这有点奇怪。

我搜索了c ++文件在/ usr / include / c ++下的位置,注意到我有两个c ++:5.4.0和5.为什么会这样?我不确定是否需要在这两个文件夹中添加std_lib_facilities.h文件。

尽管如此,我尝试了几种方法来寻找解决方案:

  1. 我在桌面上创建了一个项目文件夹,并将源代码和std_lib_facilities.h文件放在同一级别,但是出现了警告错误。

    在/ usr / include / c ++ / 5 / ext / hash_map:60:0中包含的文件中,             来自std_lib_facilities.h:34,             来自Hallo_Welt.cpp:1: /usr/include/c++/5/backward/backward_warning.h:32:2:警告: 警告此文件至少包含一个已弃用或过时的文件 标题可能会在将来某个日期删除,恕不另行通知。 请使用具有同等功能的非弃用接口 代替。有关替换标头和接口的列表,请参阅 文件backward_warning.h。要禁用此警告,请使用-Wno- 弃用。 [-Wcpp] 警告\

  2. 接下来,我将头文件放在" header"下的项目文件夹的子目录中。那也没有用,我得到了这个错误:

    g ++ Hallo_Welt.cpp Hallo_Welt.cpp:1:10:错误:#include期待" FILENAME"要么 包括std_lib_facilities.h          ^ Hallo_Welt.cpp:在函数'int main()'中: Hallo_Welt.cpp:4:2:错误:'cout'未在此范围内声明 cout<<&#;; Hallo Welt \ n";

  3. 感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你在 1 所做的是明智的;你不应该在c ++编译器的安装目录中放置任何你自己的源代码(并且Stroustrup的课件属于该类别)。

该消息只是告诉您标题(std_lib_facilities.h)引用旧代码的警告。你现在可以放心地忽略它。如果您在线搜索std_lib_facilities.h,您可能会找到该文件的较新版本。

至于为什么有两个/usr/include/c++目录,它允许不同版本的编译器(例如更新后)共存。您可以通过在命令提示符下键入g++来发现gcc -xc++ -E -v -搜索包含文件的路径。

答案 1 :(得分:0)

只需将头文件与可执行文件放在同一文件夹中并包含它即可:

// assumes this file is named hello_world.cpp

#include "std_lib_facilities.h"

int main()
{
    cout << "Hello, World!\n";
    return 0;
}

然后使用:

g++ hello_world.cpp

这将在同一文件夹中将可执行文件构建为a.out。要指定另一个二进制名称,请使用-o参数:

g++ hello_world.cpp -o hello_world

为避免需要将标题复制到每个章节的多个文件夹中(假设您使用这种文件夹管理),可以将其放置在同一级别的include文件夹中,如下所示:

+ ~/learn_cpp/
|
+--+ ch01/
|  |
|  +--- hello_world.cpp
|
+--+ include/
   |
   +--- std_lib_facilities.h

然后从hello_world.cpp内部,将其包含在相对路径中,如下所示:

#include "../include/std_lib_facilities.h"

这使其保持简单,并防止将其全局添加到系统的标头中。无论如何,您将在几章中停止使用此标头。