在 C++ 中链接内联函数的问题
Problems with linking inline functions in C++
test2.h
#ifndef TEST2_H_INCLUDED
#define TEST2_H_INCLUDED
#include "test1.h"
inline int add(int,int);
#endif // TEST2_H_INCLUDED
test2.cpp
#include "test2.h"
inline int add(int a,int b){
return a+b;
}
main.cpp
#include <iostream>
#include "test2.h"
int main()
{
std::cout << add(1,2);
return 0;
}
错误:
warning: inline function add(int,int) used but never defined
undefined reference to add(int,int)
ld returned 1 exit status
但是如果我从文件中删除 inline
,代码编译并执行得很好。我做错了什么?
注:stack overflow上的线程我都看过了,虽然和我的问题很相似,但是回答都不能解决我的问题
将 mingw 编译器与代码块一起使用
您必须在头文件中定义内联函数,更多信息请参见
.
//test2.h
#ifndef TEST2_H_INCLUDED
#define TEST2_H_INCLUDED
#include "test1.h"
inline int add(int a,int b) {
return a+b;
}
#endif // TEST2_H_INCLUDED
test2.h
#ifndef TEST2_H_INCLUDED
#define TEST2_H_INCLUDED
#include "test1.h"
inline int add(int,int);
#endif // TEST2_H_INCLUDED
test2.cpp
#include "test2.h"
inline int add(int a,int b){
return a+b;
}
main.cpp
#include <iostream>
#include "test2.h"
int main()
{
std::cout << add(1,2);
return 0;
}
错误:
warning: inline function add(int,int) used but never defined
undefined reference toadd(int,int)
ld returned 1 exit status
但是如果我从文件中删除 inline
,代码编译并执行得很好。我做错了什么?
注:stack overflow上的线程我都看过了,虽然和我的问题很相似,但是回答都不能解决我的问题
将 mingw 编译器与代码块一起使用
您必须在头文件中定义内联函数,更多信息请参见 .
//test2.h
#ifndef TEST2_H_INCLUDED
#define TEST2_H_INCLUDED
#include "test1.h"
inline int add(int a,int b) {
return a+b;
}
#endif // TEST2_H_INCLUDED