Hallo, danke für die Info. Wenn ich die ## wegmache funktioniert es, ich hab es auch in einem "vorkompilierten" File überprüft. Für alle die es interessiert hab ich auch noch was gefunden: Scheinbar dürfen die ## bei gcc neuerer Version nur noch in Kombination mit "identifier-characters" (Buchstaben, Zahlen...) verwendet werden. Die [ sowie der . gehören hierzu nicht und deshalb gibt es wohl den Fehler. Danke nochmal für die prompte Antwort. Gruss Wilfrdi -----Ursprüngliche Nachricht----- Von: Ralf Corsepius [mailto:corsepiu@faw.uni-ulm.de] Gesendet: Mittwoch, 14. April 2004 15:40 An: SuSE Programming Betreff: Re: Problem mit Praeprozessor On Wed, 2004-04-14 at 14:49, Eberhard Wilfrid ZFF TE-PR wrote:
Hallo zusammen,
ich hab ein Problem mit dem Praeprozessor,
ich hab folgenden Define:
#define GET_TEST_MACRO(name, idx) (&(test_ptr->name##[idx]))
in einem c-File habe ich folgenden Aufruf:
hallo = GET_TEST_MACRO(kap, kap_nr);
Der Kompiler spukt folgende Fehlermeldung aus
pasting "kap" and "[" does not give a valid preprocessing token
Ich verstehe leider nicht woran sich der Praeprozessor hier stoert. Das Problem taucht auch erst mit gcc version 3.3 auf mit 2.9 hatte ich hier keine Probleme Ein Klassiker unter den gcc-3.3.x Inkompatibilitäten ;)
Durchsuche mal das Archiv der gcc-Liste auf http://gcc.gnu.org und befrage google. Die "##" aus dem #define zu entfernen, dürfte vermutlich helfen. Ralf -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-programming-unsubscribe@suse.com Um eine Liste aller verfgbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-programming-help@suse.com