在一个项目中,加入了MD5的相关原代码,但编译时,提示 “unexpected end of file while looking for precompiled header directive” 等错误,搜索下,发现是预编译头部的问题。
所谓的预编译头就是把一个工程中的某一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件。这些预先编译好 的代码可以是任何的c/c++代码,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。生成预 编译头文件很耗时间。预编译头文件通常很大,通常有6-7m大。应该及时清理那些没有用的预编译头文件。
编译器是以文件为单位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有头文件中的东西如宏等,都要重新处理一遍。vc的预编译头文件保存的正是这部分信息,以避免每次都要重新处理这些头文件。
预编译头的作用:
要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成一个预编译头文件
vc工程里的 stdafx.h这个文件就是这样一个头文件,它是可以任意命名的,只不过vc的默认命名为stdafx.h。
可以在vc的project -> settings -> c/c++ -> precompiled header中禁止使用预编译头文件。
问题的解决为:
点击project->settings
选择c/c++
在category中选择precompiled header
然后选择automatic use of precompiled headers
所谓的预编译头就是把一个工程中的某一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件。这些预先编译好 的代码可以是任何的c/c++代码,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。生成预 编译头文件很耗时间。预编译头文件通常很大,通常有6-7m大。应该及时清理那些没有用的预编译头文件。
编译器是以文件为单位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有头文件中的东西如宏等,都要重新处理一遍。vc的预编译头文件保存的正是这部分信息,以避免每次都要重新处理这些头文件。
预编译头的作用:
要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成一个预编译头文件
vc工程里的 stdafx.h这个文件就是这样一个头文件,它是可以任意命名的,只不过vc的默认命名为stdafx.h。
可以在vc的project -> settings -> c/c++ -> precompiled header中禁止使用预编译头文件。
问题的解决为:
点击project->settings
选择c/c++
在category中选择precompiled header
然后选择automatic use of precompiled headers