You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何在另一个void函数中获取void函数输出并用于if判断?

问题解答

首先明确:void类型的函数没有返回值,所以你没办法直接把它的输出(准确说它没有输出)放到if语句的条件里做判断。

你示例里的写法,本质上是用全局变量fReturn来传递权限检查的结果,不是在使用void函数的输出。这种写法虽然能运行,但全局变量容易引发问题(比如变量被意外修改、代码可读性差),不推荐。

给你几个更合理的实现方式:

方案1:让函数返回检查结果

把RightsCheck改成返回整数的函数,直接在if里用返回值判断:

int RightsCheck()
{
    int fReturn = 0;
    // 执行管理员权限检查逻辑,给fReturn赋值1或0
    return fReturn;
}

void RunApp()
{
    int checkResult = RightsCheck();
    if (checkResult == 1)
    {
        printf("Admin");
    }
    else if (checkResult == 0)
    {
        printf("User");
    }
}

方案2:用指针传递结果

如果必须让RightsCheck保持void类型,可以通过指针把结果传递出来:

void RightsCheck(int* fReturn)
{
    // 执行权限检查,给*fReturn赋值1或0
    *fReturn = 1; // 示例赋值
}

void RunApp()
{
    int checkResult;
    RightsCheck(&checkResult);
    if (checkResult == 1)
    {
        printf("Admin");
    }
    else if (checkResult == 0)
    {
        printf("User");
    }
}

为什么不推荐全局变量?

  • 全局变量在整个程序范围内都能被修改,很容易出现意外的赋值错误,排查问题困难
  • 代码耦合性高,函数之间依赖全局变量,不利于维护和复用

内容的提问来源于stack exchange,提问作者urbanc cladr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:50:18