gpt4 book ai didi

控件到达具有自定义退出功能的非空函数的结尾

转载 作者:行者123 更新时间:2023-12-04 11:33:13 25 4
gpt4 key购买 nike

在尝试消除我的 GCC 警告代码时,我发现了一个奇怪的错误/行为。我的程序使用自定义退出函数执行一些清理并最终调用 exit()

然而,我对这个退出函数的使用导致 GCC 产生虚假警告:

control reaches end of non-void function with custom exit function

导致此错误的程序示例是:

文件1.c:

extern void CleanExit(int ExitCode);

int MyFunc(int ErrorCode)
{
if(-1 == ErrorCode)
return -1;
if(1 == ErrorCode)
return 1;
if(2 == ErrorCode)
return 0;
if(3 == ErrorCode)
CleanExit(0);
CleanExit(-1);
}

文件2.c:

void CleanExit(int ExitCode)
{
/* Do Some Cleanup */
exit(ExitCode);
}

有没有办法在不向使用此结构的每个函数添加无用的废话的情况下消除这些警告?

我更愿意使用标准 C 来执行此操作,但如果需要,我愿意使用某种 GCC pragma。

最佳答案

您使用 GCC 标记了您的问题。因此,与其将函数从 void 更改为 int 并在各处添加 return,不如尝试让 GCC 指定属性。在 CleanExit() 声明上方添加 __attribute__((noreturn))。这将提醒编译器 CleanExit() 永远不会直接返回给调用者。

关于控件到达具有自定义退出功能的非空函数的结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667398/

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