C++【error C3646:未知重写说明符】

error C3646未知重写说明符

一次写代码的时候VS2017报了这个错误,而且后面跟了一大堆错,在网上找了一会解决方案,可是不仅没有解决问题,甚至连错在哪都没弄明白。后来我Google了一下,通俗来说,编译器在希望找到重写标识符的位置找到了无法识别的说明符,但这是常见的错误情况,我报错的行就只有一句简单的字符串声明string name;,死活不知道为什么会报这个错误。

后来看到官方在解释部分的一句话:如果无法识别说明符,请将其替换成关键字。(附带原文地址:https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c3646?view=vs-2019
看到这里我想我明白了,很显然是编译器没找到string这个关键字,这样问题就迎刃而解了,我在文件头部添加了using namespace std;,C++中自定义之外的所有标识符和关键字都在这个命名空间,添加这一句之后编译器才能认识关键字string。

没有与这些操作数匹配的"<<"运算符

此外,还有其他类似的错误,比如在写输出语句的时候碰到这样的错误:没有与这些操作数匹配的"<<"运算符
后来发现是没有加#include <string>,后来才知道,不输出临时字符串的话就不会报错,在输出临时字符串的时候编译器默认定义了字符串输出流string buf,这里用到了关键字string,编译器无法识别,所以就会报错,加上对应的预处理命令就不会报错了。

总结一下,编译器在简单声明或者定义语句行报错的话,首先排除没有明显的单词拼写错误和符号错误,其次再排除是否正确添加需要的预处理命令和命名空间语句,如果编译器依旧报错的话,就需要仔细找问题了。

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值