一、错误描述
网上很多说上报“strlen”:找不到标识符是因为没有加头文件<string.h>导致的,但是我已经将头文件加上了:
还是会报这个错误:
二.解决方案一
把#include ”stdafx.h” 头文件放在最上方,就解决问题了:
编译通过:
三.问题溯源
出现问题的原因是使用了编译软件Visual Studio新生成项目时选择了“预编译头”选项,项目会自动生成一个以优化编译速度的为目的的预编译头:#include “stdafx.h”。预编译的作用是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件。当程序进行进行编译时可以省去一部分编译工作,节省很多时间。
预编译头一般包含了基本程序引用库、客户自定义库等,其中基本程序引用库就包含了常用的与C标准库对应的头文件,如标准输入头文件stdio.h、字符串头文件string.h等文件。问题出自于预编译头里面已经包含了一些基本的头文件,而且在编译前已经把这些库进行了预编译处理,我们再手动添加这些头文件就很容易被略过。
四.关闭预编译头
如果我们只想自己写头文件,可以关闭预编译头的使用,点击“项目”->“属性”打开项目属性:
按照图下将预编译头给停止使用:
同时还要注意编译的版本是否和修改的配置版本一致:
点击“应用”后保存,将预编译头删除掉,重新编译可以看到编译通过:
PS:可以将冗余的stdafx.h和stdafx.cpp删除掉。