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

  • Maschine Tutorials

    Maschine Tut

    15 ŞUBAT 2011
  • Michael Lummio

    Michael Lumm

    25 Mayıs 2007
  • Paste Magazine

    Paste Magazi

    28 AĞUSTOS 2008