c# to c converter
-
hallo zusammen,
weiß jemand von euch ob es einen brauchbaren c# to c converter gibt.
hab was gelesen das man java in c# convertieren kann! wäre super wenns so was für
c auch gäbe.gruß
mdoemli
-
Hi,
denke wohl kaum das es sowas gibt. Zumindest keinen brauchbaren. Da es zum einen nahe zu unmöglich ist aus objektorientierten Code vernünftig lesbaren strukturierten C-Code automatisch zu erzeugen. Wobei mehr oder weniger ein solcher Ansatz beim Kompilieren von objektorientierten Sprachen unter Anderem durchgeführt wird, da der CPU keine OOP kennt. Aber wartbar wird der Code der bei einer solchen Konvertierung entsteht wohl kaum noch sein.
Aber die eigentlich Wasserscheide die das Konvertieren von C# Anwenungen zu C unmöglich macht, sind die API-Aufrufe. Ich weiss z.B. das ich
string str = Console.Readline();
durch
char *str; scanf("%s", str);
ersetzen müsste, wenn ich eine Anwendung von C#/.net nach unmanaged C portiere, und eine Konverterierungs-Tool kann auch nur wissen welcher API-Aufruf wie ersetzt werden muss wenn man es in ihn einprogrammiert (oder es ihm zur Laufzeit über Konfigurationen) bekannt macht. Demnach würde ein derartiger Konverter nur mit für die APIs funktionieren auf der er abgerichtet ist.
Und dann bleiben noch die Features die es in C# aber in C nicht gibt. Für ein Großteil der Methoden der Klassen im Namespace System.Reflection gibt es z.B. kein nativen Libraries die equivalente Funktionalität bieten und wird es auch nie geben, da dort auf Resourcen zugegriffen werden, die durch die Laufzeitumgebung welche es bei nativen Code nicht gibt bereit gestellt werden.
Gruß
schrankwand
-
klingt einleuchtend!
dass c das problem mit den bibliotheken hat ist mir klar. aber das die oop ein problem sein kann glaube ich nicht (wie du auch angeführt hast), da ne struktur mit function-pointers ja das gleiche wie ein objekt ist (für manche auch nicht
).
trotzdem vielen dank für die ausführliche antwortgruß
mdoemli
-
mdoemli schrieb:
klingt einleuchtend!
dass c das problem mit den bibliotheken hat ist mir klar. aber das die oop ein problem sein kann glaube ich nicht (wie du auch angeführt hast), da ne struktur mit function-pointers ja das gleiche wie ein objekt ist (für manche auch nicht
).
trotzdem vielen dank für die ausführliche antwortgruß
mdoemli
Dabei frage ich mich dann wie die Vererbung von C# auf C
runtergebrochen werden soll? Unter immensen Aufwand.
Ja man kann zwar structs mit Methoden versorgen das ist trotzdem noch sehr weit weg von der Idee die hinter reinen OOP-Sprachen steckt.Ganz zu schweigen von den ganzen Sachen die aus Sicherheitsgründen
private und protected sind und das aus guten Gründen.Da prallen doch Welten/Prinzipien aufeinander.
Wo soll darin der Sinn bestehen?