C++11 包括-std=c++;11编译器选项是否正确 我想使用C++无序的数据映射结构,但是我认为我没有正确地传递-STD+C++ 11选项。 main.cpp包含main() A.cpp需要使用无序映射DS A.cpp和B.cpp可通过main.cpp访问。还有一个支持的头文件main.h
程序集的Makefile如下所示:C++11 包括-std=c++;11编译器选项是否正确 我想使用C++无序的数据映射结构,但是我认为我没有正确地传递-STD+C++ 11选项。 main.cpp包含main() A.cpp需要使用无序映射DS A.cpp和B.cpp可通过main.cpp访问。还有一个支持的头文件main.h,c++11,makefile,C++11,Makefile,程序集的Makefile如下所示: CC = g++ SRC = main.cpp B.cpp A.cpp HDR = main.h OBJ = main.o B.o A.o FLAGS = -std=c++11 all: main $(CC) -o main $(OBJ) $(FLAGS) 我得到一个错误,告诉我A.cpp不知道选项-std=c++11。如果您能告诉我哪里出了问题,那就太好了。似乎在“all:main”之后添加以下内容,“make”成功了: A.o: A.c
CC = g++
SRC = main.cpp B.cpp A.cpp
HDR = main.h
OBJ = main.o B.o A.o
FLAGS = -std=c++11
all: main
$(CC) -o main $(OBJ) $(FLAGS)
我得到一个错误,告诉我A.cpp不知道选项-std=c++11。如果您能告诉我哪里出了问题,那就太好了。似乎在“all:main”之后添加以下内容,“make”成功了:
A.o: A.cpp
g++ -c A.cpp $(FLAGS)
编译器标志用于编译,而不是链接,因此您需要将它们传递给编译器,而不是链接器(编译器将源文件编译为.obj文件,链接器将这些.obj文件合并为可执行文件)。是的,这是挂国旗的地方。顺便说一下,一般来说,C++编译器标志使用CXXIG标志。谢谢这条信息。看起来我一直做得不正确。C++编译器标志的构建宏实际上是代码> CXXFLAGG/<代码> @ MalStand谢谢,没错,没错。打字错误唉,真希望我能编辑评论:你用的是什么编译器和版本?对于GCC4.3到4.6,标志应该是
-std=c++0x
。它是g++4.7.1,但Makefile的问题已在第一个答案中解决。