我刚刚开始编程,并且正在使用Stroustrup的书:“编程:使用C++的原则和实践(第二版)”,并且不知道这个std_lib_facilities.h对于Linux用户需要去哪里。我觉得有点奇怪的是,他只为使用Visual Studio的Windows用户提供帮助。
我搜索了/usr/include/c++下的c++文件,注意到我有两个c++文件: 5.4.0和5。为什么会这样呢?我不确定是否需要在这两个文件夹中添加std_lib_facilities.h文件。
尽管如此,我还是尝试了几种方法来找到解决方案:
任何帮助都是非常感谢的。
发布于 2018-07-12 22:47:49
只需将头文件与可执行文件放在同一个文件夹中,并将其包括在内:
// 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"这使其保持简单,并防止将其添加到系统上的全局标题中。无论如何,您将在几章中停止使用这个标题。
发布于 2017-07-16 22:53:12
您在1中所做的工作是明智的;您不应该将您自己的任何源代码(并且Stroustrup的课件属于该类别)放置在c++编译器的安装目录中。
该消息只是一个警告,可以告诉您头(std_lib_facilities.h)引用了旧代码。你现在可以安全地忽略它。如果您在网上搜索std_lib_facilities.h,您可能会找到该文件的更新版本。
至于为什么有两个/usr/include/c++目录,是为了允许编译器的不同版本(例如,在更新之后)共存。您可以通过在命令提示符下键入g++来发现gcc -xc++ -E -v -搜索包含文件的路径。
https://stackoverflow.com/questions/45123528
复制相似问题