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

  • Influencer Plus

    Influencer P

    2 Ocak 2013
  • tseyina

    tseyina

    2 AĞUSTOS 2006
  • WHZGUD2

    WHZGUD2

    21 EYLÜL 2011