C 内联函数
C inline functions
据我所知,inline
C 中的函数在单个翻译单元中使用时与 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 文件中使用,我无法确定问题所在。
来自 C 标准(6.7.4 函数说明符)
7,,,For a function with external linkage, the following restrictions
apply: If a function is declared with an inline function specifier,
then it shall also be defined in the same translation unit
在您的项目中,函数 g
在带有 main 的翻译单元中声明。
据我所知,inline
C 中的函数在单个翻译单元中使用时与 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 文件中使用,我无法确定问题所在。
来自 C 标准(6.7.4 函数说明符)
7,,,For a function with external linkage, the following restrictions apply: If a function is declared with an inline function specifier, then it shall also be defined in the same translation unit
在您的项目中,函数 g
在带有 main 的翻译单元中声明。