clang ++编译模板类,在头文件中实现

时间:2017-06-04 07:15:21

标签: c++ clang clang++

$ make
clang++ -o build/blist.exe  src/driver.cpp src/BList.h -O0 -g -Wall -Wno-unused-parameter -Wextra -Wconversion -Wold-style-cast -std=c++14 -pedantic -Wold-style-cast
clang: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated [-Wdeprecated]
clang: error: cannot specify -o when generating multiple output files

我的模板实施位于BList.cpp,但BList.h包含BList.cpp。这就是我将标题作为对象传递的原因。我不知道如何设置clang来编译!

  • 我的标题必须命名为" BList.h"根据我的教授

  • 这些参数与GCC编译,但不与Clang编译。

1 个答案:

答案 0 :(得分:3)

该错误与在BList.cpp中包含BList.h无关(虽然这本身就是一种可疑的做法)。

问题是您将src/BList.h传递给Clang,就像它是源文件一样。构建指令应该是:

clang++ -o build/blist.exe  src/driver.cpp -O0 -g -Wall -Wno-unused-parameter -Wextra -Wconversion -Wold-style-cast -std=c++14 -pedantic -Wold-style-cast

您应该相应地更新您的makefile。