相关疑难解决方法(0)

C99内联函数在.c文件中

我在.c中定义了我的函数(没有头声明),如下所示:

inline int func(int i) {
 return i+1;
}
Run Code Online (Sandbox Code Playgroud)

然后在下面的同一个文件中我使用它:

...
i = func(i);
Run Code Online (Sandbox Code Playgroud)

在链接期间,我得到了"未定义的引用'func'".为什么?

c c99

36
推荐指数
2
解决办法
2万
查看次数

内联定义导致程序中未解析的符号

所以我有以下代码:

#include <stdio.h>

#define MAX(a,b) (a) > (b) ? a : b

int abs(int a)
{
    if (a > 0)
        return a;
    else
        return a*-1;
}

inline int avg(int a, int b)
{
    return (a+b)/2;
}

int math_max(int a, int b)
{
    return (avg(a,b)+abs(avg(a,b)-b));
}

int main(int argc, char** argv)
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时:gcc -g test.c -o test我得到:

/tmp/ccZbHEju.o: In function `math_max':
test.c:(.text+0x33): undefined reference to `avg'
test.c:(.text+0x44): undefined reference to `avg'
collect2: error: ld returned 1 …
Run Code Online (Sandbox Code Playgroud)

c

9
推荐指数
0
解决办法
144
查看次数

C99引用内联函数:对XXX的未定义引用,为什么要将它放到标题中?

gcc是否完全符合C99标准中规定的内联模型?

我已经浏览了一些关于这个问题的信息.但我无法理解为什么必须使用"extern"或"static"指定内联函数.

在.c文件中,调用在同一转换单元中定义的内联函数会导致错误.编译器行为的原因是什么?

我发现一个帖子是"内联"而没有"静态"或"外部"在C99中有用吗?

这是什么意思?

如果在内联定义可见的情况下调用某些具有外部链接的函数func,则行为与调用另一个函数(例如__func,具有内部链接)的行为相同.

c

6
推荐指数
2
解决办法
8695
查看次数

标签 统计

c ×3

c99 ×1