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
相关产品推荐
相关产品推荐

