microsoft - visual studio c++ tutorial
#include omitido al buscar el uso del encabezado precompilado: final inesperado del archivo mientras se busca el encabezado precompilado (4)
Tengo un código pero no compila. No puedo ir más lejos con este ejemplo porque este error aumenta cada vez que intento depurar. Nota: soy un programador de Java, y este mensaje en VS es extraño y no pude encontrar el problema. ¿Puede alguien explicarme qué significa este error?
Aquí está el código:
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);
};
El error que da Visual Studio en la salida es:
1> ------ Build started: Proyecto: zadatak, Configuración: Debug Win32 ------
1> Build started 12/13/2011 02:44:50 AM.
1> InitializeBuildStatus:
1> Tocando "Depurar / zadatak.unsuccessfulbuild".
1> ClCompile:
1> Todas las salidas están actualizadas.
1> zadatak.cpp
1> String.cpp
1> c: / users / ivo / documents / visual studio 2010 / projects / zadatak / zadatak / string.cpp (1): advertencia C4627: ''#include "String.h"'': omitido al buscar el uso del encabezado precompilado
1> Agregar directiva a ''StdAfx.h'' o reconstruir el encabezado precompilado
1> c: / users / ivo / documents / visual studio 2010 / projects / zadatak / zadatak / string.cpp (2): advertencia C4627: ''#include'': se omite al buscar el uso de encabezado precompilado
1> Agregar directiva a ''StdAfx.h'' o reconstruir el encabezado precompilado
1> c: / users / ivo / documents / visual studio 2010 / projects / zadatak / zadatak / string.cpp (4): advertencia C4627: ''#include'': omitido al buscar el uso de encabezado precompilado
1> Agregar directiva a ''StdAfx.h'' o reconstruir el encabezado precompilado
1> c: / users / ivo / documents / visual studio 2010 / projects / zadatak / zadatak / string.cpp (108): error fatal C1010: final inesperado del archivo al buscar el encabezado precompilado. ¿Olvidaste agregar ''#include'' StdAfx.h '''' a tu fuente?
1> Generando código ...
1>
1> Build FAILED.
1>
1> Tiempo transcurrido 00: 00: 00.41
========== Build: 0 exitoso, 1 fallido, 0 actualizado, 0 omitido ==========
Deberías agregar
#include "stdafx.h"
en su archivo String.cpp, pero si usó encabezados precompilados, debe colocarlo en la parte superior, como este:
#include "stdafx.h"
#include "String.h"
#include <iostream>
using namespace std;
#include <string.h>
Aquí se debate ampliamente por qué los encabezados precompilados deben ser lo primero.
Todo lo que está antes del PCH es ignorado por el compilador, por lo tanto , PCH debe ser lo primero.
Está utilizando el proyecto MSVC predeterminado que incluye encabezados precompilados . Yo recomendaría seleccionar "No usar la opción de encabezados precompilados" cuando realice un proyecto.
Usted quiere
#include "stdafx.h"
en su archivo String.cpp, como con todos los archivos .cpp.
VS 2013> Alt + F7> Propiedades de configuración> C / C ++> Todas las opciones> opción de limpieza en "Comprobaciones de SDL"> Aplicar> Aceptar.