5

所以我试图在我的 Mac 上使用 c++ 2011 正则表达式。我正在使用 Eclipse 进行编码,稍微涉足从终端编译。

这就是我尝试编译代码时发生的情况:

$ c++ -std=c++11 -o a *.cpp
scanner.cpp:11:10: fatal error: 'regex' file not found
#include <regex>  // to use this need to use -std=c++11 flag in compiler
         ^
1 error generated.

如果我使用 -std=c++11 标志,就会发生这种情况。

这是我的 c++ -v:

$ c++ -v
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.4.0
Thread model: posix

现在我在我的计算机上找到了我想要包含在我的项目中的文件“usr/lib/c++/v1/regex”。但这不在 eclipse 的包含文件中,我不知道如何让我的编译器找到它。

我如何将它添加到包含路径中,如果这是我需要做的以使其工作?

更新:

试过了

$ c++ -I/usr/lib/c++/v1 -o a *.cpp

导致错误

Undefined symbols for architecture x86_64:

遵循似乎是对我代码中每一行的引用,例如

  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(char const*) const", referenced from:
      std::__1::basic_regex<char, std::__1::regex_traits<char> >::__start_matching_list(bool) in scanner-LSmxM4.o
4

1 回答 1

7

除了. -stdlib=libc++_ -std=c++11libc++ 是支持 C++11 的标准库实现。默认情况下,它使用不支持 C++11 的 libstdc++。整个命令应如下所示:

c++ -std=c++11 -stdlib=libc++ -o output source.cpp
于 2013-09-08T22:26:44.683 回答