Avatar billede sqwer Nybegynder
04. november 2004 - 20:12 Der er 17 kommentarer og
1 løsning

FILE i Borland

Jeg har et program som compiler fint med mingw og devcpp, men som Borland ikke kan lide.
Den strander på "FILE *fil;" - er der nogen særlig header jeg skal have med for at få Borland til at spise det?
(den giver noget med "unknown symbol" eller noget i den dur, jeg har den ikke lige ved hånden...)
Avatar billede arne_v Ekspert
04. november 2004 - 20:15 #1
stdio.h
Avatar billede arne_v Ekspert
04. november 2004 - 20:16 #2
(eller cstdio hvis man er meget ANSI C++'sk)

Og du kan være helt sikkert på at den er der.
Avatar billede sqwer Nybegynder
04. november 2004 - 21:07 #3
Jeg har allerede cstdio...
Andre forslag?
(rækkefølgen af header'ne gør ingen forskel, vel?)
Avatar billede arne_v Ekspert
04. november 2004 - 21:10 #4
cstdio bør indeholde en definition af FILE.

Kan vi få den præcise fejl ?

Du har
  using namespace std;
med ?
Avatar billede sqwer Nybegynder
04. november 2004 - 21:16 #5
Jeg har kun
using std::cout;
using std::endl;
skal jeg bruge mere?

Jeg har ikke lige Borland i nærheden, så jeg har heller ikke den eksakte fejlmeddelelse... :(
Avatar billede arne_v Ekspert
04. november 2004 - 21:32 #6
Jeg spekulerede bare på om FILE skulle være røget i std namespace hos Borland.
Men det tror jeg ikke.

Vi kommer nok ikke videre uden den præcise fejl meddelelse.
Avatar billede sqwer Nybegynder
04. november 2004 - 22:11 #7
Det var jeg nok bange for...
Problemet er at jeg ikke selv har Borland liggende, men det har en som jeg laver noget for. Og det compiler fint hos mig selv, men dør når jeg så skal vise ham det.

Er der en der har Borland, som jeg kan lokke til at kopiere nedenstående ind i en fil og fortælle mig om det compiler?

--- kode: ---
#include <iostream>
#include <cstdio>
#include <time.h>

#define MAXNUMBER 12+1

char* myTime(void);
using std::cout;
using std::endl;

static int errors = 0;
const static bool checklevel = 1;

int main(int argc, char *argv[])
{

cout << "Starting program..." << endl;

FILE *fil;
fil = fopen("out.res","w");
fprintf(fil,"Her er starten på filen.\n");
fclose(fil);

cout << "\nEnding program..." << endl;

return 0;
}
Avatar billede arne_v Ekspert
04. november 2004 - 22:17 #8
Jeg har kun Borland C++ 5.5 command line, men jeg kan faktisk se noget interessant !

#include <cstdio>

giver

Error E2451 z.cpp 19: Undefined symbol 'FILE' in function main(int,char * *)
Error E2451 z.cpp 19: Undefined symbol 'fil' in function main(int,char * *)
Error E2268 z.cpp 20: Call to undefined function 'fopen' in function main(int,char * *)
Error E2268 z.cpp 21: Call to undefined function 'fprintf' in function main(int,char * *)
Error E2268 z.cpp 22: Call to undefined function 'fclose' in function main(int,char * *)

#include <stdio.h>

giver ingen fejl.
Avatar billede arne_v Ekspert
04. november 2004 - 22:17 #9
Det bar jo så fristende at erstatte

#include <cstdio>

med

#include <stdio.h>
Avatar billede arne_v Ekspert
04. november 2004 - 22:18 #10
Men jeg er absolut ikke imponeret af Borland for den her !
Avatar billede arne_v Ekspert
04. november 2004 - 22:19 #11
Ah.

#include <cstdio>

using namespace std;

virker også.

Så de har puttet stdio i std namespace !

(som jeg gættede på 21:32:17)
Avatar billede arne_v Ekspert
04. november 2004 - 22:20 #12
Ingen af mine andre C++ compilere er sådan.
Avatar billede sqwer Nybegynder
04. november 2004 - 22:22 #13
Super, tusind tak, du er genial :).
Jeg kan af oplagte grunde ikke selv tjekke det, men det ser jo særdeles overbevisende ud. Point på vej...
Avatar billede arne_v Ekspert
04. november 2004 - 22:24 #14
Jeg skal nok ligge et var så
Avatar billede arne_v Ekspert
04. november 2004 - 22:24 #15
svar
Avatar billede bertelbrander Praktikant
05. november 2004 - 00:27 #16
Jeg er bange for at det korrekte er at FILE og printf osv er puttet i namespace std, når man bruge cstdio

Der er ikke så mange kompilere der gør det, så det er lettere at bruge stdio.h
Avatar billede arne_v Ekspert
05. november 2004 - 20:15 #17
Lidt googling bekræftiger det.

Men virkeligheden er altså en anden.
Avatar billede bertelbrander Praktikant
05. november 2004 - 23:22 #18
Dette kompilerer med BorlandC, G++ (MinGW 3.3.1) og Digital Mars, men IKKE VisualC++ 6.0:

#include <cstdio>
int main()
{
  std::printf("Hello World\n");
  return 0;
}

G++, Digital Mars og Visual C++ (men IKKE BorlandC) kompilerer det hvis man fjerner std::
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester