#define PATH "yagh/headers/"
#define FILNAME "includefile"
#define CONCAT(a__, b__) CONCAT_DO(a__, b__)
#define CONCAT_DO(a__, b__) a__##b__
#define CONCATTHREE(a__, b__, c__) CONCAT(CONCAT(a__, b__), c__)
#define STRINGIFY(a__) #a__
#include STRINGIFY(CONCATTHREE(PATH ,FILNAME ,.h));
Dieses Makro in VS-Compiler funktioniert gut, aber nicht kompiliert auf GCC-Compiler:Präprozessormakro GCC: Einfügen von x und x nicht geben Sie eine gültige Vorverarbeitung Token
Error: error: pasting "/" and "includefile" does not give a valid preprocessing token
und für einige Include-Dateien gibt es der Fehler:
Error: pasting "includefile" and "." does not give a valid preprocessing token
Verkettung mit dem '##' -Operator funktioniert nicht mit Zeichenfolgenliteralen wie '" foo "' in GCC. Was genau versuchst du mit diesem Makro zu machen? – thkala
Haben Sie jemals eine akzeptable Antwort auf dieses Problem gefunden? – Michael
Interessant. Ich würde erwarten, dass beide einen Fehler wie "nicht finden, Include-Datei" CONCATTHREE (PATH, FILNAME, .h) "', was ist tatsächlich, was ich sehe, wenn ich Ihren Code durch GCC ausführen ... –