C内联函数 据我所知,C++中的代码>内联函数在单翻译单元中使用的方式与C++完全相同,在这种情况下不需要深入到 ExtIn内联< /代码>中。然而,下面包含三个文件的程序似乎不是用C编译的,我正在努力找出原因 f、 h f、 c main.c #包括“f.h” #包括 int main(){ printf(“%d”,f()); 返回0; } 链接器

C内联函数 据我所知,C++中的代码>内联函数在单翻译单元中使用的方式与C++完全相同,在这种情况下不需要深入到 ExtIn内联< /代码>中。然而,下面包含三个文件的程序似乎不是用C编译的,我正在努力找出原因 f、 h f、 c main.c #包括“f.h” #包括 int main(){ printf(“%d”,f()); 返回0; } 链接器,c,linker-errors,inline-functions,C,Linker Errors,Inline Functions,指示存在对g的未定义引用。但是,由于g仅在f.c文件中使用,我无法准确定义问题所在。来自c标准(6.7.4功能规范) 7、、对于带有外部联动装置的功能,以下限制 应用:如果使用内联函数规范声明函数, 然后还应在同一翻译单位中定义 在您的项目中,函数g在翻译单元中用main声明。您需要extern inline int g()在一个翻译单元中,在ISO CIt中有助于显示您的构建命令,例如GNU C的行为与ISO C不同 int f(); inline int g(); #include &qu

指示存在对
g
的未定义引用。但是,由于
g
仅在f.c文件中使用,我无法准确定义问题所在。

来自c标准(6.7.4功能规范)

7、、对于带有外部联动装置的功能,以下限制 应用:如果使用内联函数规范声明函数, 然后还应在同一翻译单位中定义


在您的项目中,函数
g
在翻译单元中用main声明。

您需要
extern inline int g()在一个翻译单元中,在ISO CIt中有助于显示您的构建命令,例如GNU C的行为与ISO C不同
int f();
inline int g();
#include "f.h"

inline int g() {
    return 5;
}

int f() {
    return 3 + g();
}
#include "f.h"
#include <stdio.h>

int main() {
    printf("%d", f());
    return 0;
}