Techniker schrieb:> Wie setzt> man den folgenden C Code in C# um?
gar nicht.
Es ist überhaupt keine code da den man umsetzen müsste.
Das sind nur ein paar typedef die man so in C# nicht verwendet. Wichtig
ist der code der die typedef verwendet.
Chris F. schrieb:> Das muss dann sowas in der Art werden:
was aber nicht sehr sinnvoll ist. Man sollte keine 1:1 Umsetzung von dem
Code machen. In C# Programmiert man etwas anders als in C.
Peter II schrieb:> Chris F. schrieb:>> Das muss dann sowas in der Art werden:>> was aber nicht sehr sinnvoll ist. Man sollte keine 1:1 Umsetzung von dem> Code machen. In C# Programmiert man etwas anders als in C.
Dann ist ja alles in Ordnung, da der TO nicht gefragt hatte ob meine
Version der 1:1 Umsetzung sinnvoll ist, sondern wie diese aussieht. Er
hatte auch nicht gefragt ob Code der Typdefinitionen einsetzt wichtiger
ist als die Typdefinitionen selber (die auch Programmcode sind):
Danke, dass Du das nochmal bestätigt hast. :-)
Chris F. schrieb:> Dann ist ja alles in Ordnung, da der TO nicht gefragt hatte ob meine> Version der 1:1 Umsetzung sinnvoll ist, sondern wie diese aussieht.
Nö, er hat gesagt/behauptet daß eine komplette Anwendung portiert werden
soll.
Sowas macht man NIE 1:1 sondern portiert sinnvoll.
Allenfalls schreibt man einen Konverter der das 1:1 übersetzt, aber der
entstehende Code ist dann unwartbar.
Horst schrieb:> Wie kommt man auf so eine wahnsinnige Idee???
Entweder geht man von der völlig irrigen Annahme aus, dass durch die
rein formale Konvertierung von einer Programmiersprache in eine andere
aus einer sperrigen textbasierten Anwendung plötzlich eine bunte, schöne
Klickibunti-App werde. Oder man kennt tatsächlich die möglichen
Einschränkungen und muss tatsächlich recht isolierten Code, der z.B.
bestimmte Berechnungen durchführt, übersetzen, was durchaus sinnvoll
sein kann. In der Praxis stellt man dann aber fast immer sehr schnell
fest, dass irgendwelche internen Datenstrukturen oder Besonderheiten
einer Programmiersprache doch nicht so trivial zu übersetzen sind und
größere Konzeptänderungen bedeuten. Und viel später stellt man dann
fest, dass die Neuerstellung doch einfacher gewesen wäre.
Ich selbst hatte zu Beginn meines Studiums auch in grenzenloser Naivität
angenommen, dass sich eine größere Sammlung von Rechenprogrammen, die in
ALGOL 68 für eine DEC-10 geschrieben waren, mit ein bisschen lex und
yacc in PASCAL für VAX/VMS und Turbo Pascal konvertieren ließen. Keines
dieser Programme wurde jemals fertig.
Sofern diese C-Strukturen Dinge wie z.B. den Inhalt von Dateien*
beschrieben und mit einfachen Dateioperationen als Block gelesen werden,
wird eine Umsetzung auf das, was C# anstelle von Strukturen bietet, sehr
interessante Nebeneffekte mit sich bringen, die mit hoher
Wahrscheinlichkeit recht gründlich dafür sorgen, daß sich das
"umgesetzte" Programm zu funktionieren weigert.
*) oder seriell übertragene Daten, oder per Netzwerk übertragene Daten,
oder Daten, die als Blob aus einer Datenbank kommen, oder welchen, die
in einem (E)EPROM gespeichert sind ... der Möglichkeiten sind viele.
Rufus Τ. F. schrieb:> was C# anstelle von Strukturen bietet, sehr> interessante Nebeneffekte
Daher macht es auch Sinn hier die POD-Strukte 1:1 nachzubauen. Es geht
offensichtlich um statische Protokollstrukturen die zur externen
Übergabe an andere Prozesse gedacht sind.
struct ist in C++ ein class mit "default public", dort muss man schon
mit byte-alignment aufpassen, ist aber noch gut dabei, da nativer Code
generiert wird.
Ein C++-Compiler wird quasi immer Objektcode generieren der die Daten
einer Instanz einer Klasse in der selben Reihenfolge wie deklariert
speichert.
In C# kommt die volldynamische Speicherverwaltung der .net-runtime-vm
dazu.
Chris F. schrieb:> Daher macht es auch Sinn hier die POD-Strukte 1:1 nachzubauen. Es geht> offensichtlich um statische Protokollstrukturen die zur externen> Übergabe an andere Prozesse gedacht sind.
es macht für mich eigentlich NIE sinn, so etwas nachzubauen weder unter
C noch unter C#. Man macht jeweils Methoden die die interne
Repräsentation und den Datenstrom konvertieren.
Damit kann man auch optionale Felder im Protokoll abbilden. Und es gibt
keine Probleme wenn sich das Protokoll ändert.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang