webForumDet fria alternativet

tyda felmeddelande

C/C++

16 svar · 366 visningar · startad av Nexus86

Medlem sedan okt. 20023 030 inlägg
Frågan#1

Exakt vad betyder följande felmeddelande? Stöter på det i 3 st av mina cpp-filer. :l

fatal error C1010: unexpected end of file while looking for precompiled header directive

R// Vet att det kanske inte är så mycket att gå på men jag vill bara veta vad som kan framkalla ett sådant fel, inte vilken rad i mitt program. :)

Medlem sedan juni 20008 205 inlägg
#2

"Unexpected end of file" låter som om du inte stängt något du borde stänga, t.ex. en #ifdef eller liknande. Ingen #endif som saknas eller så?

Medlem sedan okt. 20023 030 inlägg
#3

Nope. Men önskar jag hade det så jag slapp detta felmeddelande. ;)

Medlem sedan okt. 20023 030 inlägg
#4

Hade visst bara 3 cpp-filer så det är alla som den gnäller på. :l

Medlem sedan juni 20008 205 inlägg
#5

Kanske kan visa koden, månne?

Medlem sedan okt. 20023 030 inlägg
#6

Kan ladda upp en av filerna för granskning för ska du ha alla så blir det rätt mycket kod att sätta sig in i. ;)

Jag varnar dock för stökig kod. Planerar att snygga till den när jag har fått den att fungera. :)

Tog den med minst kod. :p

Medlem sedan juni 20022 599 inlägg
#7

Det här felet brukar uppstå i MSVC om man tex väljer en projekttyp med en precompiled header och sen ersätter hela koden i en cpp-fil så att:

#include "stdafx.h"

försvinner. Är det så du gör?

Medlem sedan okt. 20023 030 inlägg
#8

Japp. Jag tog bort hela den raden samt header-filen. Går inte det?

R// Har header-filen kvar. Hur fixar jag till det? :q

Medlem sedan juni 20022 599 inlägg
#9

Tja .. Att bara lägga till raden överst igen borde eventuellt funka tycker jag (om StdAfx.cpp finns kvar)?

Annars kan du ju alltid skapa ett nytt projekt av den typ du vill ha (ATL?) och se till att raden är kvar när du klipper in din egen kod.

Medlem sedan okt. 20023 030 inlägg
#10

Att lägga till raden fungerade inte. Då fick jag ett annat meddelande men provar skapa ett nytt projekt och klistra in koden.

Återkommer med resultat.

Medlem sedan okt. 20023 030 inlägg
#11

Verkar ha fungerat med tanke på att jag nu får andra felmeddelanden. :e

Men de ska jag nog kunna tyda själv. Tack för hjälpen!

Medlem sedan okt. 20023 030 inlägg
#12

Har ett jäkligt irriterande problem nu istället. Har ett par (2 st) variabler som jag inte vet var jag ska sätta deklarationerna. Började med att ha dem i en header-fil och sätta #ifndef och #define i men det gick inte. Den försöker deklarera skiten i varenda fil ändå. :l

#ifndef GLOBALS_H
#define GLOBALS_H

extern HINSTANCE	g_hInst;
extern UINT		g_DllRefCount;

#endif
Medlem sedan maj 20021 466 inlägg
#13

#ifndef ska inte behövas.

Har du provat med extern i deklarationsfilen och samma sak utan extern i en definitionsfil?

global.h: (inkluderas av alla filer)
extern HINSTANCE g_hInst;

global.cpp
#include "global.h"
HINSTANCE g_hInst;

Om du inte vill ha en förkompilerad deklarationsfil (precompiled header) kan du stänga av det i projektinställningarna. Då behöver du inte inkludera stdafx.h i alla filer. Nackdelen är att det kommer ta längre tid att kompilera programmet, eftersom standarddeklarationsfilerna måste kompileras flera gånger.

Medlem sedan okt. 20023 030 inlägg
#14

Har provat på alla möjliga tänkbara sätt, inklusive det där.

ClsFact.obj : warning LNK4006: "struct HINSTANCE__ * g_hInst" (?g_hInst@@3PAUHINSTANCE__@@A) already defined in Bar.obj; second definition ignored
ClsFact.obj : warning LNK4006: "unsigned int g_DllRefCount" (?g_DllRefCount@@3IA) already defined in Bar.obj; second definition ignored
Medlem sedan maj 20021 466 inlägg
#15

Nej, du har inte gjort exakt som jag skrev, för om du hade gjort det skulle du inte få det felmeddelande som du får.

Är du säker på att du endast deklarerar utan extern en gång i en definitionsfil (.cpp) och att du inte inkluderar filen i någon annan fil?

"already defined" tyder på att variabeln blir definierad (utan extern) två gånger.

Medlem sedan okt. 20023 030 inlägg
#16

Jasså. Missade det där med en. :r

Tack!

Medlem sedan juni 200384 inlägg
#17

fatal error C1010: unexpected end of file while looking for precompiled header directive

Förutsätter att du använder Visual Studio..
Det fick jag oxå för någon vecka sedan! Det var bara att gå in i Project->Settings->C/C++
Välj i Category "Precompiled headers" och klicka i "not using precompiled headers"

Så ska det funka!!

Det är till för att snabba upp kompilering, men är inte alls nödvändigt om projektet är litet.

266 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)