【发布时间】:2019-12-25 22:13:02
【问题描述】:
据我所知,C 中的 inline 函数在单个翻译单元中使用时与 C++ 中的函数几乎相同,在这种情况下无需深入研究 extern inline 的困难。但是,包含三个文件的以下程序似乎无法在 C 中编译,我正在努力找出原因。
f.h
int f();
inline int g();
f.c
#include "f.h"
inline int g() {
return 5;
}
int f() {
return 3 + g();
}
main.c
#include "f.h"
#include <stdio.h>
int main() {
printf("%d", f());
return 0;
}
链接器
告诉有一个对g的未定义引用。但是,由于g 仅在 f.c 文件中使用,我无法确定问题的确切位置。
【问题讨论】:
-
您需要
extern inline int g();在一个翻译单元中,在 ISO C 中 -
这将有助于显示您的构建命令,例如因为 GNU C 的行为与 ISO C 不同
标签: c linker-errors inline-functions