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

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • Matus Slovak

    Matus Slovak

    5 Temmuz 2007
  • Roger Huffman

    Roger Huffma

    4 ŞUBAT 2007