Konstanten für verschiedene Sprachen freigeben

8

Ich habe eine lange Liste von Konstanten, auf die ich in mehreren Projekten in verschiedenen Sprachen (Verilog, C, C ++ und C #) zugreifen muss. Anstatt sie in jeder Sprache zu wiederholen, gibt es eine gute Möglichkeit, diese zu teilen?

Das Einzige, woran ich denken könnte, wäre eine Textdatei und ein Vorverarbeitungsskript? Ist das die beste Lösung oder gibt es etwas einfacheres / eleganteres?

    
Kristin Morris 23.08.2010, 18:01
quelle

6 Antworten

9

Ein Vorverarbeitungsskript, das diese Konstanten in Ihrem Code automatisch aktualisiert, ist wahrscheinlich die beste Methode. Übergeben Sie den Code mit Ihrem Projekt, um die Korrektheit zu gewährleisten, und binden Sie ihn in das Build-Skript ein.

    
wheaties 23.08.2010 18:04
quelle
6

Sie können sie in einem XML-Dokument speichern und XSLT-Skripts für jede Sprache schreiben, um die entsprechenden Quelldateien in jedem Build zu generieren.

    
Henk Holterman 23.08.2010 18:06
quelle
1

Können Sie Ihr Makefile (oder Äquivalent) verwenden, um diese Konstanten zu definieren? Für C und C ++. Sie können die CLI-Optionen des Compilers verwenden, um Vorprozessorwerte für die Konstanten zu definieren. Ich habe nicht viel Build-Anpassung für Verilog gemacht, aber ich vermute, dass etwas Ähnliches dort auch existieren könnte.

    
bta 23.08.2010 18:07
quelle
1

Sie können eine einfache Datei in Form von

schreiben %Vor%

und dann etwas wie, für c:

anwenden

s/\([a-zA-Z][a-zA-Z1-9_]*\)[ \t]*=[ \t]*\(.*\)/#define /

Beachten Sie, dass Sie möglicherweise Typen angeben müssen, da nicht alle Sprachen die Verwendung eines präprozessorspezifischen Makros ermöglichen, das den Typ nicht interessiert.

Alternativ können Sie in Flex / Bison einen Lexer / Parser erstellen, um die Konfigurationsdatei zu analysieren. Dies wird klarer und einfacher zu erweitern.

    
alternative 23.08.2010 18:52
quelle
0

Sie könnten eine XML Datei mit den zu teilenden Konstanten haben und sie in jeder Sprache analysieren lassen.

    
codaddict 23.08.2010 18:04
quelle
0

Für Verilog (zumindest für System Verilog) und C ++ können Sie alle Konstanten als eine Liste (vorausgesetzt, sie sind alle vom selben Typ) wie folgt schreiben:

%Vor%

in C ++ würden Sie

verwenden %Vor%

in Verilog (zumindest im System Verilog) können Sie dies verwenden

%Vor%

Ich denke, c # enthält keine Includes. Also würden Sie dort zumindest ein Pre-Processing-Skript benötigen, um Ihre Konstanten in eine Klasse aufzunehmen. Sie können möglicherweise 'cpp' dafür verwenden. Sorry, weiß nicht viel über c #.

Um alles ähnlich zu machen, würde ich wahrscheinlich cpp benutzen, um die Datei zu erzeugen, die ich brauche:

%Vor%     
Serge 18.06.2017 16:52
quelle

Tags und Links