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