inline放声明 还是定义 还是都放
答案:2 悬赏:10
解决时间 2021-04-23 12:36
- 提问者网友:房东的猫
- 2021-04-22 12:43
inline放声明 还是定义 还是都放
最佳答案
- 二级知识专家网友:woshuo
- 2021-04-22 14:02
inline 的函数必须和函数定义一起用才起作用, 而且调用方必须能够看到这个函数的定义, 如:
// a.h
inline void foo(void);
// a.c
inline void foo(void)
{
}
// b.c
#include "a.h"
void bar(void)
{
foo();
}
这种用法 inline 是不起任何作用的, 只有这样:
// a.h
inline void foo(void)
{
}
// b.c
#include "a.h"
void bar(void)
{
foo();
}
这样才能真正的内联; 内联是在编译期间处理的, 第一种情况, 如果编译器编译 b.c 的时候, 只看到 foo 的声明, 而看不到其定义, 编译器就没办法把 foo 函数内联到调用处!
// a.h
inline void foo(void);
// a.c
inline void foo(void)
{
}
// b.c
#include "a.h"
void bar(void)
{
foo();
}
这种用法 inline 是不起任何作用的, 只有这样:
// a.h
inline void foo(void)
{
}
// b.c
#include "a.h"
void bar(void)
{
foo();
}
这样才能真正的内联; 内联是在编译期间处理的, 第一种情况, 如果编译器编译 b.c 的时候, 只看到 foo 的声明, 而看不到其定义, 编译器就没办法把 foo 函数内联到调用处!
全部回答
- 1楼网友:夢想黑洞
- 2021-04-22 14:27
extern的作用就是声明啊
你在别处定义了 如果要在另一个文件里用 又怕看不到 所以才用extern来声明这个函数 表示在别处已经定义
所以放在b.cpp里
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯