当我尝试编译以下代码时,出现链接器错误:Undefined symbols for architecture x86_64: "Foo()", referenced from: _main in main.o
使用 LLVM 4.2。
此行为仅在函数被标记时发生constexpr
。当函数被标记时,程序编译和链接正确const
。为什么声明函数constexpr
会导致链接器错误?
(我意识到以这种方式编写函数并没有带来编译时计算的好处;此时我很好奇为什么函数无法链接。)
主文件
#include <iostream>
#include "test.hpp"
int main()
{
int bar = Foo();
std::cout << bar << std::endl;
return 0;
}
测试.hpp
constexpr int Foo();
测试.cpp
#include "test.hpp"
constexpr int Foo()
{
return 42;
}