#include在查找预编译头文件时跳过——查找预编译头文件时意外结束
#include skipped when looking for precompiled header use -- unexpected end of file while looking for precompiled header
我有一些代码,但它不能编译。我不能在这个例子中进一步说明,因为每次我尝试调试时都会出现这个错误。注意:我是Java程序员,这个消息在VS是奇怪的,我找不到什么问题。有人能解释一下这个错误是什么意思吗?
代码如下:
zadatak.cpp:
// zadatak.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "String.h"
#include <iostream>
using namespace std;
void main()
{
String s1(20),s2(20);
cout<<"Unesi prvi string."<<endl;
cin>>s1;
cout<<"Unesi drugi string."<<endl;
cin>>s2;
++s1;
s2++;
String s3(40);
s3=s1+s2;
cout<<"Treci string: "<<s3<<endl;
}
String.cpp:
#include "String.h"
#include <iostream>
using namespace std;
#include <string.h>
String::String(void)
:duzina(0)
{
niz=new char[duzina];
}
String::String(int br)
:duzina(br)
{
this->niz=new char[duzina];
}
String::~String(void)
{
delete [] niz;
}
String::String(String& s)
:duzina(s.duzina)
{
this->niz=new char[this->duzina];
for(int i=0; i<this->duzina; i++)
this->niz[i]=s.niz[i];
}
void String::nadjiPocetak(char rec[])
{
int poc=0;
for(int i=0; i<this->duzina; i++)
{
int duz=0;
if(this->niz[i]==rec[0])
{
int l=strlen(rec);
for(int j=0; j<l; j++)
if(this->niz[i+j]==rec[j])
duz+=1;
}
if(duz==strlen(rec))
poc=i;
}
if(poc==0)
cout<<"U stringu ne postoji zadati string."<<endl;
else
cout<<"Pocetak je na poziciji: "<<poc+1<<endl;
}
/*void String::ucitaj()
{
cout<<"Unesi string"<<endl;
cin>>this->niz;
}
void String::prikazi()
{
cout<<"String: "<<this->niz<<endl;
}*/
String& String::operator+ (String s)
{
String *s1;
s1=new String(duzina+s.duzina);
strcpy(s1->niz,niz);
strcat(s1->niz,s.niz);
return *s1;
}
String& String::operator++ ()
{
if(niz[0]>='a' && niz[0]<='z')
niz[0]='A'+niz[0]-'a';
return *this;
}
String& String::operator++ (int n)
{
for(int i=0; i<duzina; i++)
if(niz[i]>='a' && niz[i]<='z')
niz[i]='A'+niz[i]-'a';
return *this;
}
String& String::operator= (String& s)
{
duzina=s.duzina;
delete [] niz;
niz=new char[duzina];
strcpy(niz,s.niz);
return *this;
}
istream& operator>> (istream& in, String& s)
{
in>>s.niz;
return in;
}
ostream& operator<< (ostream& out, String& s)
{
out<<s.niz;
return out;
}
String.h:
#pragma once
#include <iostream>
using namespace std;
class String
{
private:
int duzina;
char* niz;
public:
String(void);
String(int br);
~String(void);
String(String& s);
int vratiDuzinu() {return this->duzina;}
void nadjiPocetak(char rec[]);
//void ucitaj();
//void prikazi();
String& operator+ (String s);
String& operator++ ();
String& operator++ (int n);
String& operator= (String& s);
friend istream& operator>> (istream& in, String& s);
friend ostream& operator<< (ostream& out, String& s);
};
Visual Studio给出的输出错误是:
1>------ Build started: Project: zadatak, Configuration: Debug Win32------
1>Build started 12/13/2011 02:44:50 AM.
1> InitializeBuildStatus:
1>点击"Debugzadatak.unsuccessfulbuild"。
1> ClCompile:
1>所有输出都是最新的。
1> zadatak.cpp
1> String.cpp
1>c:usersivodocumentsvisual studio 2010projectszadatakzadatakstring.cpp(1):警告C4627: '#include "String.h"':在查找预编译头文件时跳过
1>为'StdAfx.h'添加指令或重新编译头文件
1>c:usersivodocumentsvisual studio 2010projectszadatakzadatakstring.cpp(2):警告C4627: '#include ':在查找预编译头文件时跳过
1>为'StdAfx.h'添加指令或重新编译头文件
1>c:usersivodocumentsvisual studio 2010projectszadatakzadatakstring.cpp(4):警告C4627: '#include ':在查找预编译头文件时跳过
1>为'StdAfx.h'添加指令或重新编译头文件
1>c:usersivodocumentsvisual studio 2010projectszadatakzadatakstring.cpp(108):致命错误C1010:查找预编译头文件时意外结束文件。您是否忘记在源代码中添加"#include"StdAfx.h ?
1>生成代码…
1>
1>构建失败了。
1>
1>时间流逝00:00:00.41
========== 构建:0成功,1失败,最新的,0跳过 ==========
你想
#include "stdafx.h"
在String.cpp文件中,与所有.cpp文件一样。
您使用默认的MSVC项目,其中包括预编译的头文件。我建议选择"不要使用预编译头选项"当你做一个项目。
你应该加上
#include "stdafx.h"
放在String.cpp文件中,但如果使用预编译的头文件,则必须将其放在TOP,例如:
#include "stdafx.h"
#include "String.h"
#include <iostream>
using namespace std;
#include <string.h>
这里有广泛的讨论为什么必须先编译头文件。
PCH之前的所有内容都被编译器忽略,因此必须放在PCH前面。
VS 2013> Alt+F7> Configuration Properties> C/c++> All Options> clean option in "SDL checks"> Apply> OK
- 使用 MEX 编译C++文件
- 获取 clang++:错误:在编译文件系统库的代码时
- 如何交叉编译C++文件
- 使用 MinGW 在 Windows 上的命令行编译C++文件
- 选择特定版本的 Visual Studio 命令行工具包,并根据特定版本的C++运行时环境编译文件
- 解析模板和范围后获取编译文件?
- 我的 PowerShell 脚本无法按预期工作(用于编译C++文件)
- 如何在不制作Visual Studio 2017项目的情况下编译C++文件?
- 'void *' 'void (*) (bool)' 指针使用 c ++ 编译器在 C 中编译文件的错误
- 在没有节点GYP的目标平台上编译C/C 文件
- 生成文件似乎以错误的顺序编译文件
- 编译 C++ 文件失败,因为找不到"ssize_t"的定义
- NeatBeans Makefile:麻烦编译.H文件
- 我无法编译文件系统库
- 在不使用预编译头C++项目中编译 C 文件
- 无法使用 Xcode 和终端在 Mac OS 上使用 OpenGL 库编译 c++ 文件
- 获取编译文件的列表,并由Make Project包含
- MinGW .h 编译文件不起作用:此文件的版本与您运行的 Windows 版本不兼容
- 编译 c++ 文件时出错:未定义的符号
- C++编译文件