问题描述
vs2019使用函数指针时编译出现了“使用了可能未初始化的本地指针变量” ?
/*********************************************************
* 文件名:MyCalc.h
* 作者:WartenSIE
* 时间:2021-11-13
* 描述:加减乘除运算实现 函数指针实现
* 邮箱:wartensie123@163.com
*********************************************************/
#include "MyCalc.h"
#include <iostream>
using namespace std;
int main()
{
// 定义函数指针 ptrCalc 是指向函数的指针
double (*ptrCalc)(double, double);
int num1 = 0, num2 = 0;
char op = NULL;
cout << "请输入两个数:" << endl;
cin >> num1 >> num2;
cout << "请输入操作符:" << endl;
cin >> op;
switch (op)
{
case '+':
ptrCalc = addtiton; // 加法运算
break;
case '-':
ptrCalc = substaction; // 减法运算
break;
case '*':
ptrCalc = multiplication; // 乘法运算
break;
case '/':
ptrCalc = division; // 除法运算
break;
default:
break;
}
// 调用打印
print_result(ptrCalc, num1, num2);
return 0;
}
error 展示
警告 C6001:使用未初始化的内存
在向未初始化的局部变量赋值之前,将报告此警告。 这可能导致不可预知的结果。 使用之前,应始终初始化变量。
编译器警告(等级 4)C4703
使用了可能未初始化的局部指针变量 “ptrCalc”,这可能导致不可预知的结果。
解决方案
方案一:对函数指针变量进行初始化
方案二(不建议使用,最好使用方案一):改变编译器属性:项目->属性-> c/c++ ->常规->SDL 检查->改为否
- 打开 vs2019 的项目,选择属性。
- 属性中选择 c/c++ 中的常规,将常规中的 SDL检查由 “是” 改为 “否”。
- 最后应用确定即可。
解决结果
编译成功!!!解决