2015-07-31 24 views
10

Bu neden derlenemiyor?Dize ile makroyu kullanma VC üzerinde başarısız oluyor

char programDate[] = "("__DATE__")"; 

Ama bu (boşluk bakınız) iyi derler:

char programDate[] = "(" __DATE__")"; 

Şimdi VC2015 biliyorum edebi-operatörlerini destekler. Ama bu derleme aşamasında olmamalı mıydı? __DATE__, ön işlemci tarafından işlenmiş olmalıdır. Burada neler oluyor?

Unicode/Unicode olmayan yapı ile bazı karma eşleşme sorununu düşündüm - ancak bu yardımcı olmuyor. Bu sadece önceden tanımlanmış makrolarıyla sorunu ancak kullanıcı ile de tanımlanmış değil:

#define MACRO "abc" 
char data[] = "("MACRO")"; 

DÜZENLEME: mevcut ve ön işleme parçası olan C++ 11 kullanıcı tanımlı değişmezleri yana

Error C3688 invalid literal suffix '__DATE__'; literal operator or literal operator template 'operator ""__DATE__' not found 
+0

Kullanıcı tanımlı değişmezler hakkındaki yorumunuzda bir şey olabilirsiniz. Genellikle C++ ayrıştırıcıları ** maksimum munch ** 'dır, çünkü her jeton için geçerli bir jeton olana kadar olabildiğince çok karakter atarlar. –

+0

Derleme hatasını yazabilirsiniz. –

cevap

İlgili konular