Sürüm bilgisi içeren bir dize içeren bir statik const dizisi belirtmek istiyorum.C önişlemcisi: stringification çalışmıyor
Zaten sürüm numaralarını içeren iki tane makro var ve buna bağlı olarak bir başlangıç const dizesi oluşturmak istiyorum.
here'da açıklanan yaklaşımı kullanmayı deniyorum, ancak kullanılabilir derleyici araçlarıyla beklenen şekilde çalışmaz.
Kodum yanındadır:
#define API_VERSION_MAJOR 4
#define API_VERSION_MINOR 47
#define _STR(x) #x
#define STR(x) _STR(x)
static const char OSAPIVersion[] =
STR(API_VERSION_MAJOR) "." STR(API_VERSION_MINOR) ;
Ben dizi yazdırırken, değeri "API_VERSION_MAJOR.API_VERSION_MINOR" yerine arasında "4.47" olduğunu.
Özelleştirilmiş bir GCC 4.4.1 ARM çapraz derleyici kullanıyorum.
Bilgisayarımda Cygwin GCC 4.5.3 ile aynı şeyi yaptığımda işe yarıyor.
Yardımlarınız için şimdiden teşekkür ederiz.
GÜNCELLEME: Bu API_VERSION_MAJOR ve API_VERSION_MINOR makro bir kaynak dosyada unvisible edildi çıktı
. Ben sadece dahil özledim. Çok basit. Açık olmak için çok basit.
Bu durumda herhangi bir uyarı çıktısı olmadığını unutmayın.
, sorununuza Tamamen alakasız ama sembol isimlerini bir altçizgi ile takip etmeyiniz, daha sonra "uygulama" (yani derleyici ve standart kütüphane) için ayrıldıkları için büyük harfle yazılmalıdır. –
Sadece kod parçasını gcc 4.4, 4.8 ve 4.9, i386, x64 ve Ubuntu 12.04 ve 14.04'te çapraz kol ile denediniz - beklendiği gibi çalışır ('compiler -E testfile.c' kullanarak). Sanırım sorun başka bir yerde yatıyor. Aksi halde çalışmamak için bir derleyici/önişlemcide büyük bir hata olur. – Dummy00001
Yayınlanan kod kaynak dosyadan kopyalandı ve yapıştırıldı mı? – LPs