【问题标题】:Including C++11 header file with in C++ source file在 C++ 源文件中包含 C++11 头文件
【发布时间】:2015-11-11 08:00:42
【问题描述】:

我正在尝试弄清楚如何在我的 C++ 项目中使用 C++11 标头。具体来说,我正在尝试使用 FakeIt 模拟框架 (https://github.com/eranpeer/FakeIt) 对使用 C++ 构建的遗留应用程序进行单元测试。

FakeIt 页面说 C++11 和 C++ 项目都支持它,但是当我使用库中的标头构建应用程序时,它抱怨无法解析 C++11 符号。

gtest/include/fakeit.hpp:28:25: error: unordered_set: No such file or directory
gtest/include/fakeit.hpp:29:17: error: tuple: No such file or directory
gtest/include/fakeit.hpp:32:18: error: atomic: No such file or directory

我是 C++ 的新手,因此非常感谢您的指点。

【问题讨论】:

  • “C++ 文件中的 C++11 标头”是什么意思?
  • 我有一个使用 g++ 编译器(没有 C++11)构建的 C++ 源文件,但我想包含一个 C++11 头文件。我想知道这将如何工作,甚至会如何工作?
  • @broun "without C++11" 不使用-std=c++11 选项是不可能的。你期待什么?
  • C++11 不是一门独立的语言,它是 C++ 的一个版本。如果要在项目中使用 C++11 功能,则必须将其编译为(至少)C++11。对于 g++,这意味着传递 -std=c++11 标志。
  • "FakeIt 是用 C++11 编写的,可用于测试 C++11 和 C++ 项目。"他们的文档中似乎有一个错误。如果它被打包在一个单独的头文件中,并且它使用 C++11,那么没有 C++11 就无法编译你的项目。

标签: c++ unit-testing c++11 mocking


【解决方案1】:

默认情况下通常不启用 C++11 支持。使用-std=c++11 参数编译您的程序。例如:

g++ -std=c++11 -I/path/to/libray file.cpp

另外,请确保您的编译器确实支持 C++11,如果它不理解 -std=c++11,它应该会抱怨。 Here 是各种 g++ 版本支持的 C++11 特性列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2011-03-20
    • 2013-10-11
    • 1970-01-01
    相关资源
    最近更新 更多