6
#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

+1

Verkettung mit dem '##' -Operator funktioniert nicht mit Zeichenfolgenliteralen wie '" foo "' in GCC. Was genau versuchst du mit diesem Makro zu machen? – thkala

+0

Haben Sie jemals eine akzeptable Antwort auf dieses Problem gefunden? – Michael

+1

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 ... –

Antwort

Verwandte Themen