预编译头文件:关于“stdafx.h”无法打开或者不测结尾的错误

    添加时间:2013-5-3 点击量:

    预编译头文件:关于“stdafx.h”无法打开或者不测结尾的错误


    从同事那拷贝hcpp文件过来的时辰碰到了“关于“stdafx.h”无法打开或者不测结尾的错误


    查到解决办法是:


    可以在setting 中,选择c/c++选项,category下来菜单选择Precompiled Headers,选择Not Using Precompiled headers


    因为我拷贝过来的时辰,cppPrecompiled Headers,的值是应用预编译头文件.因为我是初学者,所以一开端对预编译头文件什么的不清楚,以test.htest.cpp为例,我是把#include stdafx.h写在test.h文件中的,test.cpp中没有写,所以用这种办法可以解决。


     


    然则我又细心一想,若是用这种办法解决的话,那么这个test.cpp就不应用预编译头文件,那么必然在test.h展开在test.cpp文件中时编译的话会把这个stdafx.h算作一个通俗的头文件,必然会去编译stdafx.h里面包含的所有文件。这完全违背了我们应用预编译头文件来加快编译速度的初志了。


     


    然则为什么我如许写test.htest.cpp会报这个错误呢关于“stdafx.h”无法打开或者不测结尾的错误), 本来因为该cppPrecompiled Headers,的值是应用预编译头文件(即把stdafx.h算作预编译头文件),然则我的test.cpp中又没写#include stdafx.h,于是编译该cpp时会找不到这个预编译头文件,然则我想我的test.h中写了#include stdafx.h啊,理论来说,h展开到cpp后,cpp相当于有了#include stdafx.h,怎么还会失足呢?后来发明在编译任何一个cpp文件的时辰起首会按照你的编译头文件选项去断定,若是你选择的是应用预编译头文件,则就会去找到cpp中的#include stdafx.h这一行,找这一行是为了直接跳到下一行持续编译,(这就是为什么要把#include stdafx.h放在cpp文件的第一行,你放第二行,那么第一行的会直接跳过)持续编译的过程发明#include test.h,再展开。再持续编译。。若是发明没找到#include stdafx.h就报错,若是你选择的是不应用预编译头文件,那么编译时就遵守正常的编译次序来,从上到下,碰到#include test.h,展开,展开后有#include stdafx.h,把stdafx.h这里面的包含的所有文件都编译。然后持续。。



    下面给出的摘自网上


     


    下面给出一个应用预编译头文件的操纵步调, 享受一下预编译头文件给我们带来的编译速度的提拔:


    1) 添加一个stdafx.h文件名字随便取, 这里用了VS默认供给的名称), 在这个.h文件里include要应用的头文件一般是外部的库, 本身写的不常变的头文件也可以加进来


    2) 添加一个stdafx.cpp文件, include stdafx.h


    3)项目属性-->c/c++-->Precompiled设置为Use Precompiled Header, stdafx.h


    4)stdafx.cpp属性-->c/c++->Precompiled设置为Create Precompiled Header, stdafx.h


     


     


     


     


     


    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: