Hallo Community,
mir ist etwas ziemlich 'blödes' aufgefallen, als ich bei einem Projekt das aus C# und C bestand in beiden Sprachen die gleichen Strukturen und 'Standard'-Werte (#define in C) brauchte.
Da es in C# die #include Präprozessoranweisung nicht gibt, will ich mal fragen ob es sich lohnen würde, einen Präpräprozessor für C# zu schreiben, der einfache C/C++ Header in C# einfügt und eventuell auch ein bischen umschreibt.
EDIT: Ich habe gerade gesehen das #defines (meistens) in ein const umgewandelt werden müssen, da das dumme C# keine echten Definitionen unterstützt 🙄
mfg.
markus111
Hallo markus111,
Präprozessor würde ich das nicht nennen, aber natürlich kann es sinnvoll sein, aus einem C-Header eine C#-Datei zu generieren.
herbivore
Du brauchst in c# keine Header, und Defines haben genug nachteile, dass ich denen nicht hinterher trauere. Wenn du c code nach c# konvertierst, würde es sich vielleicht anbieten alle Konstanten in einer eigenen Klasse oder als Enum zu realisieren.
C Defines sind nicht mal typisiert und können sogar Anwendungscode wie if Anweisungen enthalten. Du muss dich also in jedem Fall um verschiedene Defines auf verschiedene Weise kümmern. Sie also oftmals auch als Methoden implementieren. Dafür würde sich eine eigene (Statische?) Klasse wieder anbieten.
Hallo,
ich hab mal angefangen: Geparst werden #define's die als Wert einen String oder einen Integer (Dezimal UND Hexadezimal) definiert wurden.
Sie werden als Konstanten in einer statischen, privaten Klasse Namens __IncludeMembers untergebracht. Habe es noch nie kompiliert, weiß also nicht ob es sich auch übersetzen lässt, sollte es aber.
Im Anhang hab ich auch mal den Sourcecode (der ist nicht sehr optimiert!), einfach starten, dann wird die sich im Ordner test befindene C# Datei mit dem C-Header geparst. Noch recht unvollständig.
mfg.
markus111