SORU
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ş:
  • Google+
  • E-Posta
Etiketler:
C++

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DigitalRev TV

    DigitalRev T

    30 AĞUSTOS 2007
  • george sarintzotis

    george sarin

    2 Aralık 2007
  • 趣味そうこ♪

    趣味そう

    3 Mart 2010