#include пропускается при поиске использования предварительно скомпилированного заголовка - неожиданный конец файла при поиске предварительно скомпилированного заголовка - PullRequest
23 голосов
/ 13 декабря 2011

У меня есть код, но он не скомпилируется. Я не могу идти дальше с этим примером, потому что эта ошибка возникает каждый раз, когда я пытаюсь отладить. Примечание: я программист на 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> ------ Началась сборка: Проект: задатак, Конфигурация: Отладка Win32 ------
1> Сборка началась 13.12.2011 02:44:50.
1> InitializeBuildStatus:
1> Прикосновение к «Debug \ zadatak.unsuccessfulbuild».
1> ClCompile:
1> Все выходы обновлены.
1> zadatak.cpp
1> String.cpp
1> c: \ users \ ivo \ documents \ visual studio 2010 \ projects \ zadatak \ zadatak \ string.cpp (1): предупреждение C4627: '#include "String.h"': пропущено при поиске использования скомпилированного заголовка
1> Добавить директиву в 'StdAfx.h' или пересобрать предварительно скомпилированный заголовок
1> c: \ users \ ivo \ Documents \ visual studio 2010 \ projects \ zadatak \ zadatak \ string.cpp (2): предупреждение C4627: '#include': пропущено при поиске использования предварительно скомпилированного заголовка
1> Добавить директиву в 'StdAfx.h' или пересобрать предварительно скомпилированный заголовок
1> c: \ users \ ivo \ documents \ visual studio 2010 \ projects \ zadatak \ zadatak \ string.cpp (4): предупреждение C4627: '#include': пропущено при поиске использования предварительно скомпилированного заголовка
1> Добавить директиву в 'StdAfx.h' или пересобрать предварительно скомпилированный заголовок
1> c: \ users \ ivo \ documents \ visual studio 2010 \ projects \ zadatak \ zadatak \ string.cpp (108): фатальная ошибка C1010: неожиданный конец файла при поиске предварительно скомпилированного заголовка. Вы забыли добавить '#include "StdAfx.h" к своему источнику?
1> Генерация кода ...
1>
1> Сборка НЕ ​​удалась.
1>
1> прошедшее время 00: 00: 00.41
========== Построение: 0 выполнено, 1 не выполнено, 0 обновлено, 0 пропущено ==========

Ответы [ 4 ]

19 голосов
/ 13 декабря 2011

Вы хотите

#include "stdafx.h"

в вашем файле String.cpp, как и во всех файлах .cpp.

14 голосов
/ 13 декабря 2011

Вы используете проект MSVC по умолчанию, который включает предварительно скомпилированные заголовки .Я бы порекомендовал выбрать «Не использовать предварительно скомпилированные заголовки» при создании проекта.

13 голосов
/ 31 мая 2013

Вы должны добавить

#include "stdafx.h"

в вашем файле String.cpp, но если вы использовали предварительно скомпилированные заголовки, вы должны поместить его в ТОП, например:

#include "stdafx.h"
#include "String.h"
#include <iostream>
using namespace std;
#include <string.h>

Здесь широко обсуждается , почему предварительно скомпилированные заголовки должны стоять первыми.

Все, что перед PCH игнорируется компилятором, , поэтому PCH должен стоять первым.

1 голос
/ 24 сентября 2016

VS 2013> Alt + F7> Свойства конфигурации> C / C ++> Все параметры> опция очистки в «Проверках SDL»> Применить> OK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...