0
随着gnu89:如何使用C99实现和共享内联函数?
/* share.h */
extern inline void f (void);
/* function.c */
void f (void) {}
/* main.c */
#include "share.h"
int main (int argc, char **argv) {
f();
return 0;
}
随着C99:
/* share.h */
static inline void f (void) {}
/* main.c */
#include "share.h"
int main (int argc, char **argv) {
f();
return 0;
}
如何实现在function.c
f()
一个定义,就像在gnu89但使用C99模式?
对不起,如果我不清楚,我希望函数定义在源文件中,以保持逻辑只在一个文件中,无论函数是否被内联。 – lxndr 2010-07-22 08:35:49
我不认为这是可能的。为了使内联可行,翻译单元需要知道函数定义,所以它必须在头文件中。 也许你可以用一些奇怪的条件包含来做到这一点,我会尝试添加到我的答案。 – schot 2010-07-22 09:21:07
那么,直接在头文件中写入定义可能会更具可读性。这是否意味着extern inline在C99中没有意义? – lxndr 2010-07-22 11:37:45