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

  • Eric Anthony

    Eric Anthony

    13 AĞUSTOS 2011
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008
  • Tutorials Junction

    Tutorials Ju

    1 Ocak 2014