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 的翻译单元中声明。