2015-10-27 24 views
10

#include yönergesini harici olarak tanımlanmış bir makro olarak geçirilen bir dosya adıyla kullanmak istiyorum.#include yönergesinde makro ikamesi

E.g.

#include "MyFile.h" 

stringizing operatör # sonuçlanan FILE (tırnaklar olmadan) dize MyFile olarak tanımlanabilir olacaktır

#include #FILE".h" 

, FILE bir makro argüman değil sembolü olarak burada kullanılamaz. Başka yaklaşımları denedim, boşuna.

Çözüm görüyor musunuz?

+1

gcc, bazı işlevler sağlar * harici * dosyaları içerir http://stackoverflow.com/questions/3387453/include-header-files-using-command-line-option. Bu size yardımcı olabilir. –

+0

İlginç. Hem gcc hem de MSVC kullanıyorum ve #include direktifim ilk pozisyonda olmayabilir. –

+2

Bitişik dizilim değişmez birleştirme işlemi, ön işlemciden sonraya kadar yapılmadığından, mümkün olmayacaktır, ör. '" MyFile "". H "geçerli bir ad içermeyecektir. Sadece "FILE" i, eklenecek gerçek başlık adı olarak tanımlayamaz mısın? '-DFILE = "MyFile.h"'? –

cevap

12

Dize değişmez birleştirme, #include yönergelerinden sonra iki çeviri aşaması gerçekleşir; yaklaşımınız işe yaramaz. Bunun yerine,

Demo hatları boyunca bir şey deneyin.

+0

İnanılmaz, mükemmel çalışıyor! –