C内联函数[重复项]

问题描述 投票:0回答:1

据我所知,当在单个翻译单元中使用时,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文件中使用,因此我无法确切确定问题出在哪里。

c linker-errors inline-functions
1个回答
0
投票

来自C标准(6.7.4函数规范)

7 ,,对于具有外部链接的功能,以下限制适用:如果使用内联函数指定符声明函数,然后也应在同一个翻译单元中定义]]

在您的项目中,函数g在带有main的转换单元中声明。

© www.soinside.com 2019 - 2024. All rights reserved.