报错:此声明没有存储类或类型说明符

问题描述

在学习案例的时候遇到一个知识点,顺手在源文件空白处编辑了一段,发现vs开始报错

严重性说明
错误(活动)此声明没有存储类或类型说明符

在函数体外进行赋值的时候就会出现这个问题。

比如

out_type convert(const in_value& t) {
	//sample1
	stringstream stream;
	stream << t;
	out_type result;
	stream >> result;
	return result;
	
}
	//sample2
	double d;
	string salary;
	string s = "12.56";
	d = convert<double>(s);
	salary = convert<string>(9000.0);
	std::stringstream sstream(s);

在倒数2、3行的变量d和salary就会出现这个错误。

解决办法就是把这段代码,改到函数体内部。

out_type convert(const in_value& t) {
	//sample1
	stringstream stream;
	stream << t;
	out_type result;
	stream >> result;
	return result;
	
	//sample2
	double d;
	string salary;
	string s = "12.56";
	d = convert<double>(s);
	salary = convert<string>(9000.0);
	std::stringstream sstream(s);
}

这里代码应用了模板,又放回模板定义内,并没有报错,我们先不管这段代码有没有bug
但的确解决了声明缺失的错误,说明思路正确

根本原因

函数外只能定义全局变量或者对象 ,而不能执行语句及调用函数 。

报错语句对变量进行了赋值操作,而本段代码是在函数之外

关于错误说明

错误说明中“此声明没有类型说明符”可以理解:编译器将该句识别为变量声明,正确格式为声明时赋值;

什么是“存储类”,现在不知道,继续学习,以后解答。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值