sagen, dass ich eine Datei, die übersetzt TARGET
definiert in FEATURE
definiert:Halten Sie umfassen Anweisung in vorverarbeiteten Ausgang
// File options.h
#ifdef TARGET_A
#define FEATURE_X
#endif
#ifdef TARGET_B
#define FEATURE_Y
#endif
struct foo {
int a;
int b;
};
Und ich habe eine Reihe von Dateien ifdef
‚ed mit FEATURE
definiert:
// File foo.c
#include "options.h"
#ifdef FEATURE_X
int x;
#endif
#ifdef FEATURE_Y
int y;
#endif
Wie kann ich dann foo.c
so vorverarbeiten, dass es die Include-Anweisung verarbeitet, aber in der Datei behält?
Etwas wie:
$ some-pre-process-tool -DTARGET_A -I. -o foo.pp.c foo.c
$ cat foo.pp.c
// File foo.c
#include "options.h"
int x;
$
können Sie wahrscheinlich bekommst du was du brauchst (wenn auch möglicherweise nicht ganz so einfach) mit [coan] (http://coan2.sourceforge.net/). Viel Glück. – rici
Das habe ich gesehen, als ich nach einer Lösung gegoogelt habe - aber für diesen Zweck sah es nach einem zu großen Aufwand aus. Benutzt du es/weißt du, und ist es gut für diese Art von Dingen? Ich frage, denn die Lösung, mit der ich endete, ist das Entfernen von zufälligen Leerstellen, was lästig ist ... – Allan
Ich habe Coan verwendet und es hat die Probleme gelöst, die ich lösen wollte. Ich weiß nicht, wie einfach es ist, dein Problem zu lösen: Ich denke, du brauchst zwei Schritte, in denen du zuerst das Merkmal definierst, das aus einer Zielauswahl resultiert (was du mit GCC machen kannst, solange du es hast) eine Möglichkeit, die relevanten Feature-Makros nach Namen zu identifizieren) und dann coan verwenden, um selektiv nur diese Makros zu behandeln. – rici