Toon posts:

[GCC] Krijg stl niet aan de praat

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een erg klein en simpel programmaatje geschreven wat eigenlijk gewoon normaal zou moeten compileren. Ik compileer het onder freebsd met gcc.

C:
1
2
3
4
5
6
7
8
9
10
#include <stdlib.h>
#include <string.h>

int main(int iArg, char *argv[])
{
    string       sTest1 = "";
    std::string sTest2 = "";

    return 1;
}


Wanneer ik die compileer, krijg ik de volgende fouten:
code:
1
2
3
4
%gcc -o info -x c++ info.c
info.c: In function `int main(int, char **)':
info.c:6: syntax error before `='
info.c:7: syntax error before `='


Ik heb al verschillende dingen geprobeerd, $PATH instellen met /usr/lib erbij gcc opties, maar het lukt niet

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Haal de .h uit regel 2 weg; werkt dit wel?

Developer Accused Of Unreadable Code Refuses To Comment


Verwijderd

Topicstarter
Nu komt er zoveel lelijke error code uit dat ik niet eens alles kan pasten hier....

code:
1
2
3
/tmp/ccfpnNpH.o: In function `__malloc_alloc_template<0>::_S_oom_malloc(unsigned int)':
/tmp/ccfpnNpH.o(.gnu.linkonce.t._S_oom_malloc__t23__malloc_alloc_template1i0Ui+0x1a): undefined reference to `endl(ostream &)'
/tmp/ccfpnNpH.o(.gnu.linkonce.t._S_oom_malloc__t23__malloc_alloc_template1i0Ui+0x27): undefined reference to `cerr'

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

Probeer je niet gewoon C++ code te compileren met een C compiler? Geef je sourcefile eens de extensie .cpp ipv .c (en het is ook handig als je een [code=c++] tag gebruikt ipv [code=c] voor c++ code ;))

[ Voor 8% gewijzigd door .oisyn op 26-01-2005 12:50 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Pindakaas
code:
1
2
3
4
5
%mv info.c info.cpp
%gcc info.cpp
info.cpp: In function `int main(int, char **)':
info.cpp:6: syntax error before `='
info.cpp:7: syntax error before `='

[ Voor 7% gewijzigd door Verwijderd op 26-01-2005 12:51 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

Heej, deze zag ik net nog niet:
Verwijderd schreef op woensdag 26 januari 2005 @ 12:45:
Nu komt er zoveel lelijke error code uit dat ik niet eens alles kan pasten hier....

code:
1
2
3
/tmp/ccfpnNpH.o: In function `__malloc_alloc_template<0>::_S_oom_malloc(unsigned int)':
/tmp/ccfpnNpH.o(.gnu.linkonce.t._S_oom_malloc__t23__malloc_alloc_template1i0Ui+0x1a): undefined reference to `endl(ostream &)'
/tmp/ccfpnNpH.o(.gnu.linkonce.t._S_oom_malloc__t23__malloc_alloc_template1i0Ui+0x27): undefined reference to `cerr'
Dit zijn link errors, als je compileert met g++ dan link je automatisch tegen de c++ stdlib. Kan ook met gcc, maar dan moet je de c++ stdlib expliciet meegeven (met -lstd++ geloof ik).

En <string> zonder .h is idd de juiste notatiewijze

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

1) Je zult toch echt een #include <string> moeten doen en geen string.h.
2) C++ compileren doe je met g++ en niet met gcc.

edit:
spuit 11

[ Voor 12% gewijzigd door Verwijderd op 26-01-2005 13:01 ]


  • Daos
  • Registratie: Oktober 2004
  • Niet online
In c doe je het zo:

C:
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdlib.h>
#include <string.h>

typedef char * string;

int main(int iArg, char *argv[])
{
    string    sTest1 = "test1";
    string    sTest2 = "test2";

    return 0;
}


Meestal gebruik je gewoon gelijk die "char *".

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Ik denk ook dat je "-lstdc++" mist, dan moet het wel werken.
Pagina: 1