我在gcc下编译代码时遇到了一些奇怪的错误。它告诉我std::function
不存在。
我可以使用以下代码重新创建错误:
#include <functional>
#include <stdio.h>
void test(){ printf ("test"); }
int main() {
std::function<void()> f;
f = test;
f();
}
如果我运行gcc(来自cygwin):(我的错误信息是德语,所以我翻译了它。在英语gcc上可能听起来不同)
$ gcc test.cpp
test.cpp: in function "int main():
test.cpp:7:3: Error: "function" is not an element of "std"«
test.cpp:7:25: Error: "f" was not defined in this scope
使用MSVC编译成功。 请告诉我在我的代码中我做错了什么。
约翰
答案 0 :(得分:14)
将其编译为:
g++ test.cpp -std=c++0x
-std=c++0x
是必需的,因为您使用的是C ++ 11功能,否则g++ test.cpp
就足够了。
确保您拥有最新版本的GCC。您可以将版本检查为:
g++ --version
答案 1 :(得分:3)
您需要以C++
模式和C++11
模式进行编译。因此,您需要g++
并将-std
标记设置为c++0x
。
g ++ test.cpp -std = c ++ 0x
您也可以从gcc 4.7开始使用-std=c++11
。