PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Overloading nur in C++



lokicall
27-02-2007, 14:10
Hallo,

ich sitze hier an einen Windows Rechner und programmiere ein audiomixer für Open-/NetBSD. Als IDE verwende ich Dev-C++. Mein C Programm benutzt overloading(überladen von Funktionen). Nun ist mir aufgefallen, das das nicht mit den C Compiler funktioniert(glaube mingw). Wenn ich die Datei unbenenne als cpp Datei und kompiliere gehts wieder, weil er ja dann den C++ Compiler benutzt.
Ich dachte immer overloading wäre ein imperatives Programmierkonzept, wieso gibts das nicht im C Compiler:confused: ? Gibts denn sowas wie ein Schalter,Options um das zu aktivieren. Das Programm besteht ja aus reinen C Code.

anda_skoa
27-02-2007, 20:46
C kann kein Overloading.
Sieht man leicht, wenn man sich abs() und seine Varianten ansieht, denn gäbe es Overloading wäre das alles nur ein Name.

Ciao,
_

lokicall
28-02-2007, 10:19
Merkwürdig, selbst der freepascal compiler beherrscht overloading, die alten TPascal auch, aber eben nur intern(Bsp abs()).
Ist das neu hinzugekommen, so wie der C99 Standard oder war das schon immer so? Ist mir nämlich früher nie aufgefallen.
Logische Gründe warum das nicht implementiert wurde im C Compiler, sehe ich auch nicht. Das hat nichts mit objektorientierter Programmierung zu tun und die Funktionen sind ja alle statisch.

peschmae
28-02-2007, 11:12
Hat ja keiner gesagt alles was nicht mit objektorientierter Programmierung zu tun habe müsse in C implementiert sein oder? ;)

Das war schon immer so. C ist alt.

MfG Peschmä

Yonibear
28-02-2007, 13:59
Ich kann dir einen logischen Grund nennen:
Overloading wird von den Compilern implementiert indem dem Namen der Funktion eine Zeichenkette hinzugefügt wird, die die Parameter beschreibt. Dieses Verfahren ist aber nicht standardisiert, daher könnte man keinen Code verschiedener C-Compiler linken oder zur Laufzeit über den Symbolnamen eine Funktion laden, wie z.B. mit dlsym.

peschmae
28-02-2007, 16:07
Naja, dass das Ganze in C++ nicht standardisiert ist, ist eigentlich kein Grund. Man hätte das ja standardisieren können, wenn man das in C denn eingeführt hätte.

MfG Peschmä

Christoph
01-03-2007, 07:36
Hat ja keiner gesagt alles was nicht mit objektorientierter Programmierung zu tun habe müsse in C implementiert sein oder? ;)

'Tschuldigung, wenn ich jetzt Haare spalte, aber Overloading ist kein objektorientiertes Feature, sondern ein prozedurales und somit von Hause aus auch Bestandteil einiger rein prozeduraler Programmiersprachen (z.B. PL/SQL).

peschmae
01-03-2007, 11:28
'Tschuldigung, aber hast du meinen Satz überhaupt gelesen?

Ich hab nicht behauptet overloading hätte was mit OOP zu tun. ;)

MfG Peschmä