gpt4 book ai didi

c - 如何使用 C99 实现和共享内联函数?

转载 作者:行者123 更新时间:2023-11-30 14:30:25 25 4
gpt4 key购买 nike

使用 gnu89:

/* 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;
}

如何像在 gnu89 中一样但使用 C99 模式在 function.c 中实现 f() 的一个定义?

最佳答案

您将内联定义放入不带 extern 的头文件中,并在源文件中添加 extern 声明/原型(prototype):

/* share.h */
inline void f(void) {}

/* function.c */
#include "share.h"
extern void f(void);

/* main.c */
#include "share.h"
int main(int argc, char *argv[])
{
f();
return 0;
}

参见http://www.greenend.org.uk/rjk/2003/03/inline.html有关 C 中内联的更多信息。

如果你真的想像你说的那样将所有定义(内联或非内联)保留在 function.c 中:

/* share.h */
#define WANT_INLINE 1
#include "function.c"

/* function.c */
#ifdef WANT_INLINE
inline void f(void) {}
#else
#include "share.h"
extern void f(void);
#endif

未经严格测试,不推荐。

关于c - 如何使用 C99 实现和共享内联函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com