जब मैं निम्न कोड संकलित करने का प्रयास करता हूं तो मुझे एक लिंकर त्रुटि मिलती है: Undefined symbols for architecture x86_64: "Foo()", referenced from: _main in main.o
LLVM 4.2 का उपयोग कर।constexpr फ़ंक्शन के लिए अनिर्धारित प्रतीक
यह व्यवहार केवल तब होता है जब फ़ंक्शन को constexpr
चिह्नित किया जाता है। फ़ंक्शन को const
चिह्नित करते समय प्रोग्राम संकलित और सही तरीके से लिंक करता है। फ़ंक्शन constexpr
फ़ंक्शन की घोषणा क्यों एक लिंकर त्रुटि का कारण बनती है?
(मुझे लगता है कि समारोह इस तरह से लिख संकलन समय गणना के लाभ नहीं देता है;। इस बिंदु पर मैं उत्सुक क्यों समारोह से जोड़ने के लिए विफल रहता है कर रहा हूँ)
main.cpp
#include <iostream>
#include "test.hpp"
int main()
{
int bar = Foo();
std::cout << bar << std::endl;
return 0;
}
test.hpp
constexpr int Foo();
test.cpp
#include "test.hpp"
constexpr int Foo()
{
return 42;
}
देखें http://stackoverflow.com/questions/14391272/does-constexpr-imply-inline –