17 Kasım 2008, PAZARTESİ
C işareti olarak önerilmiyor
Taşınabilir C ile iptal etme istiyorum, bir arayüz bir yöntem var . Bu herkes için Araştırdım Microsoft belirli bir çözüm; #pragma deprecated __declspec(deprecated) oldu.
İkincilik ödülü bir çözüm GCC ve MSVC bir çözüm ifdef olacaktır.
Teşekkürler
CEVAP
17 Kasım 2008, PAZARTESİ
Bu hile yapmak gerekir:
#ifdef __GNUC__
#define DEPRECATED(func) func __attribute__ ((deprecated))
#elif defined(_MSC_VER)
#define DEPRECATED(func) __declspec(deprecated) func
#else
#pragma message("WARNING: You need to implement DEPRECATED for this compiler")
#define DEPRECATED(func) func
#endif
...
//don't use me any more
DEPRECATED(void OldFunc(int a, float b));
//use me instead
void NewFunc(int a, double b);
Ancak, eğer bir işlevin dönüş türü adı bir virgül bu KALDIRILAN makro için 2 argüman ileterek olarak preprocesor yorumlanacaktır olarak örneğin std::pair<int, int>
Eğer bir sorunla karşılaşır. Bu durumda, dönüş türü olarak typedef gerekir.
Edit: daha basit (ama muhtemelen daha az yaygın olarak uyumlu) versiyon here.
Bunu Paylaş:
Nasıl git işareti silinmiş ve dosya bi...
Referans olarak yeni dönüş değeri atam...
CSS liste-her madde için madde işareti...
Nasıl bir eylem bağlantı olarak alan a...
Nasıl kalıcı olarak Visual Studio 2008...