SORU
1 EKİM 2009, PERŞEMBE


Belirleme C 32 vs 64 bit

Bir şekilde güvenilir bir şekilde C kodu 32 vs 64 bit derlenmiş olup olmadığını belirlemek için arıyorum. Geldik ile ne düşünüyoruz makul bir çözüm kullanarak makrolar, ama oldu merak etmiyor musun, eğer insanlar düşünmüş durumlarda bu başarısız olabilir ya da varsa daha iyi bir yolu bunu yapmak için. Lütfen çapraz platform, çoklu derleyici bir ortamda bunu yapmak için çalışıyoruz unutmayın.

#if ((ULONG_MAX) == (UINT_MAX))
# define IS32BIT
#else
# define IS64BIT
#endif

#ifdef IS64BIT
DoMy64BitOperation()
#else
DoMy32BitOperation()
#endif

Teşekkürler.

CEVAP
1 EKİM 2009, PERŞEMBE


template<int> void DoMyOperationHelper();

template<> void DoMyOperationHelper<4>() 
{
  // do 32-bits operations
}

template<> void DoMyOperationHelper<8>() 
{
  // do 64-bits operations
}

// helper function just to hide clumsy syntax
inline void DoMyOperation() { DoMyOperationHelper<sizeof(size_t)>(); }

int main()
{
  // appropriate function will be selected at compile time 
  DoMyOperation(); 

  return 0;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Rhapsody

    Rhapsody

    7 ŞUBAT 2008
  • Toddler Fun Learning

    Toddler Fun

    8 ŞUBAT 2013
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005