amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > StormC 4 Problem mit GCC [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2005-07-11, 21:20 h

AlexanderK
Posts: 7
User
Hallo Leute,

kaum Mitglied und schon dumme Fragen stellen, man möge es mir verzeihen ;-)

Ich hatte mir vor einiger Zeit das StormC 4 Paket bei H&P gekauft und jetzt mal unter WinUAE (mit OS 3.9) installiert. Ich bin Anfänger in Sachen C Programmierung und bin schon bei einem einfachen "HalloWelt" gescheitert, ich hoffe ihr könnt mir weiterhelfen.

Wenn es mit dem GCC kompiliert wird, hagelt es Fehler, die sich aber meinem Verständnis nur auf die includierte sdtio.h beziehen. Wenn ich das gleiche Programm ohne Änderung mit dem alten Storm3 Compiler übersetze geht es ohne eine einzige Warnung??

Ich stelle nur in Settings / Project Environment / Compiler auf den Storm Compiler und es geht.

Jemand eine Idee, was ich da so grundlegend falsch mache?

Alex

----
#include <stdio.h>

int main() {
printf("Hello World.");
return 0;
}

[ - Answer - Quote - Direct link - ]

2005-07-11, 21:50 h

whose
Posts: 2156
User
Zitat:
Original von AlexanderK:

Jemand eine Idee, was ich da so grundlegend falsch mache?

----
#include <stdio.h>

int main() {
printf("Hello World.");
return 0;
}


1. sollte es main(void) heißen, das gibt zwar nicht zwingend eine Meldung, ist aber sauberer.

2. Schau mal in den "Projekt Environment"-Settings, ob der korrekte Include-Pfad eingetragen ist, der sollte "StormC:Include" heißen.

3. Wären die Meldungen selbst sehr interessant, nicht, daß bei Dir die Installation selbst fehlerhaft ist (kann schon mal vorkommen).

Hoffe, ich konnte etwas helfen.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Answer - Quote - Direct link - ]

2005-07-11, 22:21 h

AlexanderK
Posts: 7
User
@ whose:

Erst einmal Danke für die schnelle Antwort...

> 1. sollte es main(void) heißen, das gibt zwar nicht zwingend eine Meldung, ist aber sauberer.

O.K. Werd ich mir mal merken, wir wollen ja sauberen C-Code schreiben..

> 2. Schau mal in den "Projekt Environment"-Settings, ob der korrekte Include-Pfad eingetragen ist, der sollte "StormC:Include" heißen.

Ich hab nochmal nachgesehen, der Pfad ist korrekt. Ich habe den Pfad auch mal absolut (Work:StormC/Include) und nicht nur von der Verknüpfung (assign StormC) aus eingetragen, allem beim alten. Die Header Datei ist auch da.

> 3. Wären die Meldungen selbst sehr interessant, nicht, daß bei Dir die Installation selbst fehlerhaft ist (kann schon mal vorkommen).

Natürlich, leider war ich zu bl.d die Meldungen zu kopieren. Ich hab daher nur mal zwei exemplarisch aufgeführt (die ersten zwei). Danach geht es munter weiter die ganze Header-Datei lang.

--
Message: In file included from HelloWorld.c, line 1
HelloWorld.c, line 1
--
Error: At top level:
parse error before 'size_t'
...include/stdio.h, line 61
--
Warning: At top level:
function declaration isn't a prototype
...include/stdio.h, line 61
--

> Hoffe, ich konnte etwas helfen.

Ja hast du schon.

Dank Dir,
Alex

[ - Answer - Quote - Direct link - ]

2005-07-12, 02:02 h

whose
Posts: 2156
User
Zitat:
Original von AlexanderK:

Natürlich, leider war ich zu bl.d die Meldungen zu kopieren. Ich hab daher nur mal zwei exemplarisch aufgeführt (die ersten zwei). Danach geht es munter weiter die ganze Header-Datei lang.

--
Message: In file included from HelloWorld.c, line 1
HelloWorld.c, line 1
--
Error: At top level:
parse error before 'size_t'
...include/stdio.h, line 61
--
Warning: At top level:
function declaration isn't a prototype
...include/stdio.h, line 61
--


Hm, die Meldung kenne ich... allerdings wundert es mich etwas, daß diese Meldung bei stdio.h kommt... probier mal folgendes:

Bei den "Compiler"-Optionen, da wo "NDEBUG" eingetragen ist, trägst Du einfach mal folgendes nach:

NO_INLINE_LIBCALLS

in exakt dieser Schreibweise. Wenn dann die Meldungen verschwinden, solltest Du Dein Programm nochmal überprüfen, vor allem, welches printf() Du verwendest.

Die Meldung, wie Du sie oben angegeben hast, kommt im allgemeinen nur bei den Includes der dos.library, also dos/dos.h und ähnliche. Verursacht wird die durch fehlerhafte Includes, wobei sich der Compiler besonders an den "Ersatz-Macros" stört (das wäre z.B. Printf(), beachte, daß hier das P großgeschrieben ist, bei der Version aus stdio.h mußt Du das P klein schreiben!).

Vielleicht sollte ich mich doch endlich mal daran machen, die Includes zu korrigieren und die Macros wie Printf() GCC-gerecht umzubauen... I-)

Grüße

P.S.: Falls das nichts bringen sollte, schick mir doch bitte mal Dein stdio.h zu, dann steckt der Fehler da drin. Frag mich aber nicht, wie der da hinkommt, diese Includes sind beim StormC4 korrekt. Apropos: Hast Du die Update-Patches eigentlich installiert, falls Du eine ältere Version bekommen hast? Die Updates findest Du bei H&P im Support-Bereich...

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 12.07.2005 um 02:05 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]

2005-07-12, 08:53 h

AlexanderK
Posts: 7
User
@ whose:

> Hm, die Meldung kenne ich... allerdings wundert es mich etwas, daß diese Meldung bei stdio.h kommt... probier mal folgendes:
>
> Bei den "Compiler"-Optionen, da wo "NDEBUG" eingetragen ist, trägst Du einfach mal folgendes nach:
>
> NO_INLINE_LIBCALLS

Das war es leider nicht, aber kommt noch besser ;-)

> P.S.: [...] Apropos: Hast Du die Update-Patches eigentlich installiert, falls Du eine ältere Version bekommen hast? Die Updates findest Du bei H&P im Support-Bereich...

Bingo! Das war der Tipp, den ich gebraucht hatte. Ich glaubte zwar, dass ich die letzte Storm Version hatte, dem war aber nicht so. Ich habe wohl die zweite von drei Versionen und da gibt es ein Update bei H&P.

Als ich das installiert hatte, gab es zwar keine Fehler mehr, aber er mekerte eine fehlende ixemul.library an. Das hatte er vorher noch nie gemacht? Ich hab mir also aus dem Aminet die Bibliothek gezogen installiert und siehe da, ich war wieder ein Stück weiter. Denn jetzt suchte der den Datenträger AmiTCP? Ich also mal auf gut Glück den TCP Stack von der AmigaOS CD installiert... und was soll ich sagen whose? Es läuft! Er kompiliert und kompiliert... ist zwar nicht der schnellste, aber es läuft!

Ich danke dir noch mal für den entscheidenden Tipp.

Gruß,
Alex



[ Dieser Beitrag wurde von AlexanderK am 12.07.2005 um 08:54 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]

2005-07-12, 13:03 h

whose
Posts: 2156
User
Zitat:
Original von AlexanderK:

> P.S.: [...] Apropos: Hast Du die Update-Patches eigentlich installiert, falls Du eine ältere Version bekommen hast? Die Updates findest Du bei H&P im Support-Bereich...

Bingo! Das war der Tipp, den ich gebraucht hatte. Ich glaubte zwar, dass ich die letzte Storm Version hatte, dem war aber nicht so. Ich habe wohl die zweite von drei Versionen und da gibt es ein Update bei H&P.


Ah, dann hast Du diese unsägliche Mittelversion erwischt. Ja, die läuft leider nicht allzu gut I-)

Zitat:
Als ich das installiert hatte, gab es zwar keine Fehler mehr, aber er mekerte eine fehlende ixemul.library an. Das hatte er vorher noch nie gemacht? Ich hab mir also aus dem Aminet die Bibliothek gezogen installiert und siehe da, ich war wieder ein Stück weiter. Denn jetzt suchte der den Datenträger AmiTCP? Ich also mal auf gut Glück den TCP Stack von der AmigaOS CD installiert... und was soll ich sagen whose? Es läuft! Er kompiliert und kompiliert... ist zwar nicht der schnellste, aber es läuft!

Genesis basiert auf AmiTCP :D Die ixemul.library wird für das CVS-System benötigt und der TCP/IP-Stack für das verteilte Make, also StormServer etc. Daß der nicht besonders schnell ist, hast Du dem GCC zu verdanken, der als Port leider etwas lahm arbeitet. Dafür kriegt der wenigstens auch solche Feinheiten wie die STL für C++ durch, daß packt der StormC3 leider nicht.

Zitat:
Ich danke dir noch mal für den entscheidenden Tipp.

Kein Thema. Freut mich, daß ich helfen konnte :)

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Answer - Quote - Direct link - ]

2005-07-21, 08:39 h

eliotmc
Posts: 925
User
Hab mir jetzt nicht alles durchgelesen,
aber diesen Fehler haut gcc raus,
weil du folgendes vergessen hast:

using namespace std;



--
regards

eliot

[ - Answer - Quote - Direct link - ]

2005-07-21, 09:12 h

Solar
Posts: 3680
User
@ eliotmc:

Bull.

<stdio.h> ist ein C-Include, und selbst wenn er im C++-Modus compilieren würde, wären alle Identifier automatisch im globalen Namespace. std:: wird nur interessant, wenn Du C++-Includes verwendest - zu erkennen am nicht vorhandenen ".h" am Ende und - im Falle der C-Standardlib - dem führenden "c" (<cstdio>).

Und selbst dann ist es schlechter Stil, den ganzen Namespace global zu machen. Ein std::printf() ist auch nicht so viel mehr zu tippen, und wenigstens eindeutig...

[ Dieser Beitrag wurde von Solar am 22.07.2005 um 08:54 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > StormC 4 Problem mit GCC [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.