C++ 如何确定增压收割台是否只能用作收割台?

C++ 如何确定增压收割台是否只能用作收割台?,c++,boost,C++,Boost,我在我的项目中使用Boost头文件,该文件由g++编译。我下载了Boost源代码,但没有构建它,因此没有可链接的库文件 当我阅读Boost网站()时,它说Boost.Thread需要相应的库,但我很高兴使用(Boost::mutex)头,而不链接到Boost线程库 如何确定是否需要链接相应的库以使用特定的Boost头文件?Boost文档说明给定的库是否仅为头文件。如果您使用的库不只是指定的头,并且不针对相应的库进行链接,则这是未定义的行为 它碰巧起作用(或似乎起作用)这一事实实际上并不相关。在终

我在我的项目中使用Boost头文件,该文件由
g++
编译。我下载了Boost源代码,但没有构建它,因此没有可链接的库文件

当我阅读Boost网站()时,它说
Boost.Thread
需要相应的库,但我很高兴使用
(Boost::mutex)
头,而不链接到Boost线程库


如何确定是否需要链接相应的库以使用特定的Boost头文件?

Boost文档说明给定的库是否仅为头文件。如果您使用的库不只是指定的头,并且不针对相应的库进行链接,则这是未定义的行为

它碰巧起作用(或似乎起作用)这一事实实际上并不相关。

在终端中:

./bootstrap.sh --show-libraries

输出显示需要特殊构建和安装的库的列表。

编译并链接,看看是否有未解析的符号。会有什么风险?我不知道它是否链接好。。。我不敢假设libboost_线程会覆盖libc函数或其他东西(这是很糟糕的),我无法想象它会如何失败或“未定义”。也许你的意思是不可移植、不受支持?有什么风险?谁知道呢?图书馆的作者说你必须做X才能使用图书馆,而你不做X,图书馆的作者可以免除所有的担保。任何发生的事情都会发生:它没有定义。我认为你把文档和标准规范弄错了。它只是一个图书馆。这只是代码。它不会改变编译器或链接器,因此我们可以对此进行推理:)它是一个具有规范的库。就像C++有一个规范一样。你违反了规则,你没有任何保证。(我们可以谈论可能发生的事情,就像我们对语言所做的那样。但它仍然是未定义的行为。)