2011-01-12 22 views
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)); 

Bu makro VS derleyicisi çalışıyor ancak GCC derleyicisi üzerinde derleme değil: Preprocessor makro GCC: yapıştırma x x belirteci geçerli preprocessing vermez

Error: error: pasting "/" and "includefile" does not give a valid preprocessing token

ve bazıları için

dosyaları dahil o verir hata:

Error: pasting "includefile" and "." does not give a valid preprocessing token

+1

## 'işleciyle birleştirme, GCC'de" foo "gibi dize değişmezleriyle çalışmaz. Bu makro ile tam olarak ne yapmaya çalışıyorsun? – thkala

+0

Bu problem için kabul edilebilir bir cevap buldunuz mu? – Michael

+1

İlginç. Ben her ikisini de dahil olmak üzere bir hata vermek umuyoruz dosya içerir "CONCATTHREE (PATH, FILNAME, .h)" ', aslında ben gcc ile kodunuzu çalıştırdığımda gördüğüm ... –

cevap