【问题标题】:Detect usage of STL in C++ [duplicate]检测 C++ 中 STL 的使用 [重复]
【发布时间】:2014-02-24 06:18:44
【问题描述】:

昨天我有一个有趣的问题。我在 Linux 上有一些 C++ 代码,我可能会将其提供给 Android 团队。他们问我是否可以省略 STL 的使用。这就引出了一个普遍的问题,即如何检测 C++ 代码中 STL 的使用?

我最好的解决方案(很可能不是最好的)是搜索以下头文件,删除它们并编译。

#include <vector>
#include <deque>
#include <list>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <iterator>
#include <iterator>
#include <algorithm>
#include <numeric>
#include <numeric>
#include <functional>
#include <utility>
#include <memory>

更好的解决方案?

【问题讨论】:

  • 您可以尝试在您的项目中搜索std。要么你会找到using namespace std,在这种情况下删除这些语句会导致任何 stl 类型的声明出错,或者你会发现显式的 std::class 变量声明。
  • 不清楚您所说的STL 是什么意思。这是一个不完整的标题列表。您是否只想使用 c 样式的标题,例如 cstdio 而不是 iostream,即使它不在列表中?为什么之后需要删除这些标头?为什么不禁止程序员使用它并检查代码呢?当代码在没有标头的情况下无法编译时,仅删除标头有何帮助?
  • 他们是否解释了 STL 的含义?它是来自 STL 的 C++ 标准库的子集吗?它是实际的 STL 吗?还是C++标准库?
  • 我没有看到上述方法的问题。如果不包含 STL 标头,则不能使用 STL。您可能还想包含&lt;unordered_set&gt;&lt;unordered_map&gt;

标签: c++ stl


【解决方案1】:

使用 gcc(不是 g++)编译你的代码,默认情况下它不与 C++ 标准库链接。

【讨论】:

    猜你喜欢
    • 2012-11-11
    • 2023-03-15
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多