我在头文件中使用函数实现来进行简单的代码共享。最小示例:
foo.h:
#ifndef FOO_H
#define FOO_H
// potentially want to include extern/static/inline keyword for this function
int max(int x, int y) {
return x < y ? y : x;
}
#endif
bar.c:
#include <stdio.h>
#include "foo.h"
int main() {
printf("Max of 1 and 2: %d", max(1, 2));
}
有人建议我为inline
.h文件中实现的功能的关键字。但是,这给了我一个链接器错误。如果我使用extern inline
它,确实可以编译,但是由于我只是想尝试一下,所以我不确定它在某种程度上不是危险/有害的。
extern inline
在这里使用合适吗?如果没有,什么样的组合的static
,extern
以及inline
应该怎么使用?
如果要将函数的实现放在头文件中,则它必须具有static
存储类说明符。这将功能名称的可见性限制为仅最终嵌入该功能的翻译单元(即.c文件)。请注意,这样做意味着如果多个源文件包含此标头,则每个源文件将具有其自己的函数副本。
使用inline
和static
并不是必须的,但是可以作为编译器对它执行某些优化的提示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句