Ich möchte leere Implementierungen von Prozeduren in einer Header-Datei definiert generieren. Idealerweise sollten sie NULL für Zeiger, 0 für Ganzzahlen usw. zurückgeben und in einer idealen Welt auch nach stderr drucken, welche Funktion aufgerufen wurde.C-Code automatisch von Header generieren
Die Motivation dafür ist die Notwendigkeit, einen Wrapper zu implementieren, der eine Teilmenge einer komplexen, vorhandenen API (die Header-Datei) an eine andere Bibliothek anpasst. Nur eine kleine Anzahl der Verfahren in der API muss delegiert werden, aber es ist nicht klar, welche. Ich hoffe also, einen iterativen Ansatz zu verwenden, bei dem ich gegen diesen automatisch generierten Wrapper antrete, sehe, was aufgerufen wird, das mit Delegierung implementiere und wiederhole.
Ich habe Automatically generate C++ file from header? gesehen, aber die Antworten scheinen C++ spezifisch zu sein.
Also, für Menschen, die die Frage in einfachen Worten geschrieben haben, wie kann ich die Generierung einer solchen Implementierung angesichts der Header-Datei automatisieren? Ich würde ein existierendes Werkzeug bevorzugen - meine derzeitige beste Schätzung für eine einfache Lösung ist Pycparser.
update Danke Jungs. Beide gute Antworten. Hat auch meinen aktuellen Hack gepostet.
Jetzt haben Sie nicht wirklich eine Frage gestellt, soweit ich sehe, aber ich vermute, Sie fragen nach einem vorhandenen Werkzeug, das das tun kann? Leider kenne ich kein Tool, aber es klingt grundlegend genug, um eine schnelle Python-Implementierung (oder eine andere High-Level-Sprache) durchzuführen, um es zu lösen. – Jite
Ich habe die Frage geklärt. Ja, ich kann ein Programm schreiben, um dies zu tun. aber es ist nicht trivial - es erfordert zum Beispiel einen anständigen Parser. Der Header ist groß genug und komplex genug, dass ein Ad-hoc-Regexp-basierter Kludi ein zeitraubendes Chaos sein wird. –
Hallo, muss der Prozess leicht wiederholbar sein? Möchten Sie beispielsweise die Stub-Implementierung aktualisieren können, wenn neue Versionen der API veröffentlicht werden? – OlduwanSteve