gpt4 book ai didi

c - 声明返回 int 的内联函数的正确方法

转载 作者:行者123 更新时间:2023-11-30 17:12:07 28 4
gpt4 key购买 nike

以下代码

inline int read_int()
{
return 5;
}

导致错误:需要一个“;”

我尝试将上述代码写入与我的项目不同的文件中,但错误仍然存​​在。这很奇怪,因为我看到有几个程序使用了这样的功能。

有办法解决这个问题吗?解决办法是什么?我还使用 Visual Studio 和 CodeChef 编程,这需要速度。

最佳答案

显然 gcc 对声明为 inline int() 的函数非常满意。

但是,clang 会出于某种原因拒绝这些。如果该函数仅适用于当前文件,则将其声明为静态将解决该问题。

以下代码在 gcc 和 clang 中编译并运行:

#include <stdio.h>

static inline int read_int() {
return 5;
}

int main() {
int x;
x = read_int();
printf("int=%d\n",x);
return 0;
}

编辑:

我找到了some documentation on clang's behaviour ,这解释了这种情况。

简单来说,clang 遵循 C99 标准,其中内联函数被视为代码未优化时使用的另一个函数的替代版本。始终使用静态内联函数,从而避免了该问题。

另一种选择是使用优化进行编译(甚至是 -O1),这将导致编译器使用函数的内联版本,而不是搜索非内联版本(这不是那里)。

关于c - 声明返回 int 的内联函数的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31794307/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com