C-Code und g++

radio_controlled
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 107
Registriert: 8. Okt 2010 20:31

C-Code und g++

Beitrag von radio_controlled »

Hi
Aus welchem Grund soll der "C-Code" mit dem g++ compiliert werden?
Hab das irgendwie nicht mitbekommen.

Ich muss jetzt so komische sachen machen wie malloc casten

mw1039
Computerversteher
Computerversteher
Beiträge: 346
Registriert: 12. Apr 2011 12:18

Re: C-Code und g++

Beitrag von mw1039 »

Der Hintergrund war zum einen, dass sich der Aufruf nicht nochmal aendert, wenn wir auf C++ wechseln. Ausserdem ist C seit dem neuen Standard C++11 wieder quasi eine echte Teilmenge von C++.
g++ ist einfach weniger restriktiv, was manche syntaktischen Elemente angeht. Z.B. muesste man in C streng genommen in Header-Dateien Funktionsdeklarationen als extern markieren, wenn man sie auch in anderen .c-Dateien zugaenglich machen moechte. Und ich weiss nicht, was gcc mit initializer lists (z.B. float mat[3][4] = {{-886.8, 0.0, -512.0, 0.0}, {0.0, 886.8, -512.0, 0.0}, {0.0, 0.0, -1.0, 0.0}};) macht.
Ich glaube der aktuelle C-Standard unterstuetzt das auch. Der default von gcc ist -std=gnu89. Man koennte den aktuellen Standard auch mit gcc -std=c99 aktivieren. Aber die einfachere Variante war es g++ zu benutzen.

radio_controlled
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 107
Registriert: 8. Okt 2010 20:31

Re: C-Code und g++

Beitrag von radio_controlled »

Dankeschön für die ausführliche Erklärung, ich hoffe es weiß dann auch jeder, dass er c++ und nicht c programmiert.
(Wegen der Sache mit malloc z.B., da ist ein ganz anderes Konzept dahinter als in c++, die Hausaufgabe H4/2 ist auch nicht so lösbar wie eigentlich gedacht...)

Wegen deinem Problem mit den "extern funktionsdeklarationen", vielleicht hilft es da den gcc sensibler zu schalten, das geht mit "-Wall" und noch einem parameter, den ich gerade leider nicht mehr im Kopf habe.

float mat[3][4] = {{-886.8, 0.0, -512.0, 0.0}, {0.0, 886.8, -512.0, 0.0}, {0.0, 0.0, -1.0, 0.0}}; sollte ohne probleme funktionieren

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 6. Okt 2011 15:25

Re: C-Code und g++

Beitrag von Thomas Huxhorn »

Hai

Code: Alles auswählen

for(int i = 0; i < 3; i++)
Funktioniert nicht mit gcc
error: 'for' loop initial declaration used outside C99 mode
Darum g++ um sich das Leben nicht unnötig schwer zu machen.

Wo brauchst du malloc bei H4/2 ? :)

radio_controlled
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 107
Registriert: 8. Okt 2010 20:31

Re: C-Code und g++

Beitrag von radio_controlled »

Thomas Huxhorn hat geschrieben:Hai

Code: Alles auswählen

for(int i = 0; i < 3; i++)
Funktioniert nicht mit gcc
error: 'for' loop initial declaration used outside C99 mode
Darum g++ um sich das Leben nicht unnötig schwer zu machen.

Wo brauchst du malloc bei H4/2 ? :)
Hi
for(int i = 0; i < 3; i++) geht in c99

malloc war nicht auf H4/2 bezogen

in H4/2 geht es um call by value, call by reference und noch irgendwas
z.b. das hier ist c++ und nicht c, wird in der aufgabe aber wohl verlangt:

Code: Alles auswählen

int increment(int& n) {...}

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 6. Okt 2011 15:25

Re: C-Code und g++

Beitrag von Thomas Huxhorn »

Ja. Man muss dem gcc eben sagt, er soll c99 nutzen. Sonst gehts nicht.

Also ist call by reference garnicht C sonst nur C++ ? Wieder was gelernt :)

mw1039
Computerversteher
Computerversteher
Beiträge: 346
Registriert: 12. Apr 2011 12:18

Re: C-Code und g++

Beitrag von mw1039 »

Ah, stimmt. Ich erinner mich wieder. Es ist schon 2 Wochen her, dass ich Uebung 4 entworfen hatte ^^
Ja, for(int i=...) wird mit gcc -std=c99 akzeptiert. Aber wie gesagt, die einfachste Variante ist einfach nur g++ zu benutzen.

Dass man bei der Benutzung von Referenzen kein C benutzt, steht sogar in der Fussnote auf Seite 5 der Aufgabenstellung.

Es kann sein, dass ich mich da zu weit aus dem Fenster lehne, aber ich glaube in den meisten Anwendungen ist die Unterscheidung ob ich reines C benutze oder mich einiger Annehmlichkeiten aus C++ bediene auch nicht so wichtig, oder? Wenn man eingebettete Systeme programmiert spielt es wahrscheinlich eine Rolle. Ansonsten aber meistens nicht.

radio_controlled
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 107
Registriert: 8. Okt 2010 20:31

Re: C-Code und g++

Beitrag von radio_controlled »

mw1039 hat geschrieben:Es kann sein, dass ich mich da zu weit aus dem Fenster lehne, aber ich glaube in den meisten Anwendungen ist die Unterscheidung ob ich reines C benutze oder mich einiger Annehmlichkeiten aus C++ bediene auch nicht so wichtig, oder? Wenn man eingebettete Systeme programmiert spielt es wahrscheinlich eine Rolle. Ansonsten aber meistens nicht.
Ja stimmt. Und außerhalb wird C ja auch kaum benutzt.
Danke für die Klarstellungen.

Antworten

Zurück zu „Archiv“