Präprozessor und Projektvariable

OP #833009
Lesenswert?

Hallo,

ich habe folgendes problem, ich möchte Projektabhängig verschiedene 
Files includieren und weiß aber leider nicht ob es eine "Projekt 
Variable" dafür gibt.
Das AVR Studio speichert ja den Namen in das Makefile. Kann ich den 
wieder auslesen und abfragen?

im Prinzip sollte es so aussehen:

#if (_PROJECT_ == Projekt1)
  #define SCHALTUNG  Print1
#elif (_project_ == Projekt2)
  #define SCHALTUNG  Print2
#endif

#if SCHALTUNG ...
OP #833054
Lesenswert?

Ich habe nun -DPROJ $(PROJECT) hinzugefügt. Wird beim Build erstellen 
auch angezeigt. Nur die Abfrage im Headerfile funktioniert leider nicht.

Kann ich dann nicht einfach folgendermasse abfragen:

#if (PROJ == MeinProjekt)
  #warning Mein Projekt
#elif (PROJ == SeinProjekt)
  #warning Sein Prijekt
#endif
Moderator Persönliche Seite #833159
Lesenswert?

Norbert S. wrote:

> Kann es sein, dass da nur Zahlen übergeben werden können und keine
> Zeichen?

Der Präprozessor macht eine reine Textersetzung.  Da kann beliebiger
Kram drin stehen.

> Oder funktionieren im Präprozessorteil nur Zahlen?

Da nähern wir uns der Sache schon eher...  Der Steuerausdruck eines
#if ist ein arithmetischer Ausdruck vom Typ `int'.

Was aber geht ist sowas:

project.h:
1
#define PROJ_A  42
2
#define PROJ_B  4711

main.c:
1
#include "project.h"
2

3
#if PROJECT == PROJ_A
4
// do this
5
#elif PROJECT == PROJ_B
6
// do that
7
#else
8
#  error "Unknown project."
9
#endif
10
...

Im Makefile dann -DPROJECT=$(PROJECT), wobei PROJECT die Werte PROJ_A
oder PROJ_B haben darf.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren