SORU
16 HAZİRAN 2009, Salı


Tespit C programında Program aracılığıyla endianness

Programlı bir şekilde ya da büyük-endian veya little-endian bir mimari olup olmadığını tespit etmek var mı? Intel veya PPC sistemi çalıştırmak ve tam olarak aynı kodu (koşullu derleme gibi) kullanan kod yazmak istiyorum.

CEVAP
16 HAZİRAN 2009, Salı


Yöntemi türü punning dayalı sevmem genellikle derleyici tarafından karşı uyardı. Aynen sendikalar ne için var !

int is_big_endian(void)
{
    union {
        uint32_t i;
        char c[4];
    } bint = {0x01020304};

    return bint.c[0] == 1; 
}

Prensip diğerleri tarafından önerilen tip dava eşdeğerdir, ama bu daha net ve C99, doğru olmasını garanti göre. gcc doğrudan işaretçi dökme göre bu tercih eder.

Bu da çok daha iyi tespit endianness derleme zamanında - OS desteği çoklu mimari (yağ ikili Mac os x için örnek), bu iş için hem ppc/i386, oysa çok kolay işler bozulsun yoksa.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • CNNMoney

    CNNMoney

    16 Kasım 2006
  • kylelandry

    kylelandry

    9 AĞUSTOS 2007