d********t 发帖数: 9628 | 1 如果inline function的declaration和definition分开放,一个放header,一个放file
,compile会报错吗?还是只Ignore? |
S**I 发帖数: 15689 | 2 inline is only a suggestion, compiler is allowed to ignore it.
file
【在 d********t 的大作中提到】 : 如果inline function的declaration和definition分开放,一个放header,一个放file : ,compile会报错吗?还是只Ignore?
|
q****x 发帖数: 7404 | 3 下面这个例子,即使没有inline关键字,X::f()也必须inline,否则ODR违例?
这里的inline语法上必须有,但编译器还是可以处理成普通函数,还是说必须inline?
// class_X.h
#include
using namespace std;
class X {
public:
void f();
};
void X::f()
{
cout << "X::f()" << endl;
}
//class_X1.cpp
#include "class_X.h"
void f()
{
X x;
x.f();
}
// class_X2.cpp
#include "class_X.h"
int main()
{
X x;
x.f();
f();
}
g++ class_X1.cpp class_X2.cpp
【在 S**I 的大作中提到】 : inline is only a suggestion, compiler is allowed to ignore it. : : file
|
r****t 发帖数: 10904 | 4 没有试过,觉得应该报错。
file
【在 d********t 的大作中提到】 : 如果inline function的declaration和definition分开放,一个放header,一个放file : ,compile会报错吗?还是只Ignore?
|
y*******g 发帖数: 6599 | 5 难说,反正rvct 4.0 直接写在class header里面的也不inline
【在 q****x 的大作中提到】 : 下面这个例子,即使没有inline关键字,X::f()也必须inline,否则ODR违例? : 这里的inline语法上必须有,但编译器还是可以处理成普通函数,还是说必须inline? : // class_X.h : #include : using namespace std; : class X { : public: : void f(); : }; : void X::f()
|