救命!!!超级菜鸟问题:fatal error C1010: unexpected end of file while looking for precompiled header directive是什么错?

时间:2022-12-13 14:45:44
    #include <iostream.h>  

class TPoint
    {
        public:
    TPoint(int x, int y) {X=x; Y=y;}
    TPoint(TPoint & p);
    ~TPoint() {cout<<"gou xi han shu\n";}
    int Xcoord() {return X;}
    int Ycoord() {return Y;}
        private:
    int X, Y;
    };

    TPoint::TPoint(TPoint & p)
    {
        X = p.X;
        Y = p.Y;
        cout<<"kao bei chu shi hua gou zao han shu\n";
    }


    void main()
    {
TPoint P1(5, 7);
TPoint P2(P1);
cout<<"P2="<<P2.Xcoord()<<","<<P2.Ycoord()<<endl;
    }

这段代码在VC++里编译出错,为什么呢???请帮忙看看呀!
Compiling...
testConst.cpp
c:\program files\microsoft visual studio\myprojects\testconst\testconst.cpp(31) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.

11 个解决方案

#1


类的声明最后要加“;”

#2


在第一行加
#include "stdafx.h"
这是vc的预编译机制。

#3


有没有搞错那?
我执行得好好的,输出如下:
kao bei chu shi hua gou zao han shu
P2=5,7
gou xi han shu
gou xi han shu
Press any key to continue
不是你的头文件没有了吧?



#4


scklotz(晓春) 
谢谢,你说对了,但"stdafx.h"是个什么东东啊?
为什么另外一段程序没有加这个包含文件却正常编译了呢:
 #include <iostream.h>

    class R
    {
public:
R(int r1, int r2) { R1=r1; R2=r2; }
void print();
void print() const;

private:
int R1, R2;
    };

    void R::print()
    {
cout<<R1<<","<<R2<<endl;
    }

    void R::print() const
    {
cout<<R1<<";"<<R2<<endl;
    }

    void main()
    {
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
    }

为什么这个被打印了两次呢???---"gou xi han shu"

#5


scklotz(晓春)说得对,如果你在vc下使用创建一个工程,并且这个工程使用了mfc
那你必须包含stdafx.h文件,如果在bc3.1等控制台下没有这个问题

#6


tc113(萧峰) 
哦,那为什么这个被打印了两次呢???---"gou xi han shu" 

#7


这个程序什么问题呀?
我用VC6写的程序在xch2h.yeah.net/prog/test.rar

#8


TPoint P1(5, 7);
TPoint P2(P1);

你定义了两个对象,被析构了两次。自然打印了两次。 

tc113(萧峰) (2002-1-14 17:16:48)  得0分 
scklotz(晓春)说得对,如果你在vc下使用创建一个工程,并且这个工程使用了mfc
那你必须包含stdafx.h文件,如果在bc3.1等控制台下没有这个问题  

这其实呢并不是一个问题,这是vc为了加快编译速度而采取的一种缺省机制。
你可以设置不需要这么做,
在project -> setting -> c/c++ -> precompile 
select : not precompile head file.
就ok 了。

#9


因为你生成了两个对象实例

#10


是的,我也这样做过,不过一般我把这个头文件加进去

#11


哦,明白了,谢谢各位的帮助!!!我马上加分。

#1


类的声明最后要加“;”

#2


在第一行加
#include "stdafx.h"
这是vc的预编译机制。

#3


有没有搞错那?
我执行得好好的,输出如下:
kao bei chu shi hua gou zao han shu
P2=5,7
gou xi han shu
gou xi han shu
Press any key to continue
不是你的头文件没有了吧?



#4


scklotz(晓春) 
谢谢,你说对了,但"stdafx.h"是个什么东东啊?
为什么另外一段程序没有加这个包含文件却正常编译了呢:
 #include <iostream.h>

    class R
    {
public:
R(int r1, int r2) { R1=r1; R2=r2; }
void print();
void print() const;

private:
int R1, R2;
    };

    void R::print()
    {
cout<<R1<<","<<R2<<endl;
    }

    void R::print() const
    {
cout<<R1<<";"<<R2<<endl;
    }

    void main()
    {
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
    }

为什么这个被打印了两次呢???---"gou xi han shu"

#5


scklotz(晓春)说得对,如果你在vc下使用创建一个工程,并且这个工程使用了mfc
那你必须包含stdafx.h文件,如果在bc3.1等控制台下没有这个问题

#6


tc113(萧峰) 
哦,那为什么这个被打印了两次呢???---"gou xi han shu" 

#7


这个程序什么问题呀?
我用VC6写的程序在xch2h.yeah.net/prog/test.rar

#8


TPoint P1(5, 7);
TPoint P2(P1);

你定义了两个对象,被析构了两次。自然打印了两次。 

tc113(萧峰) (2002-1-14 17:16:48)  得0分 
scklotz(晓春)说得对,如果你在vc下使用创建一个工程,并且这个工程使用了mfc
那你必须包含stdafx.h文件,如果在bc3.1等控制台下没有这个问题  

这其实呢并不是一个问题,这是vc为了加快编译速度而采取的一种缺省机制。
你可以设置不需要这么做,
在project -> setting -> c/c++ -> precompile 
select : not precompile head file.
就ok 了。

#9


因为你生成了两个对象实例

#10


是的,我也这样做过,不过一般我把这个头文件加进去

#11


哦,明白了,谢谢各位的帮助!!!我马上加分。