【C++】加了<string.h>还是报“strlen:找不到标识符”的错误

一、错误描述

        网上很多说上报“strlen”:找不到标识符是因为没有加头文件<string.h>导致的,但是我已经将头文件加上了:

        

        还是会报这个错误:

         

二.解决方案一

         把#include ”stdafx.h” 头文件放在最上方,就解决问题了:

        

        编译通过:

三.问题溯源

        出现问题的原因是使用了编译软件Visual Studio新生成项目时选择了“预编译头”选项,项目会自动生成一个以优化编译速度的为目的的预编译头:#include “stdafx.h”。预编译的作用是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件。当程序进行进行编译时可以省去一部分编译工作,节省很多时间。

        预编译头一般包含了基本程序引用库、客户自定义库等,其中基本程序引用库就包含了常用的与C标准库对应的头文件,如标准输入头文件stdio.h、字符串头文件string.h等文件。问题出自于预编译头里面已经包含了一些基本的头文件,而且在编译前已经把这些库进行了预编译处理,我们再手动添加这些头文件就很容易被略过。

四.关闭预编译头

        如果我们只想自己写头文件,可以关闭预编译头的使用,点击“项目”->“属性”打开项目属性:       

        按照图下将预编译头给停止使用:

        同时还要注意编译的版本是否和修改的配置版本一致: 

        点击“应用”后保存,将预编译头删除掉,重新编译可以看到编译通过:

        PS:可以将冗余的stdafx.h和stdafx.cpp删除掉。 

猜你喜欢

转载自blog.csdn.net/qq_41884002/article/details/127803856