SORU
20 Ocak 2010, ÇARŞAMBA


C tanımı büyük veya küçük indian indian makine belirlemek için Makro?

Bir satır bir makro tanımı makinenin endianness belirlemek için vardır. Aşağıdaki kodu kullanıyorum ama makro dönüştürme çok uzun olacaktı.

unsigned char test_endian( void )
{
    int test_var = 1;
    unsigned char test_endian* = (unsigned char*)&test_var;

    return (test_endian[0] == NULL);
}

CEVAP
20 Ocak 2010, ÇARŞAMBA


Kod rasgele bayt emir, bir dosya order32.h denilen içine koymak için hazır destek:

#ifndef ORDER32_H
#define ORDER32_H

#include <limits.h>
#include <stdint.h>

#if CHAR_BIT != 8
#error "unsupported char size"
#endif

enum
{
    O32_LITTLE_ENDIAN = 0x03020100ul,
    O32_BIG_ENDIAN = 0x00010203ul,
    O32_PDP_ENDIAN = 0x01000302ul
};

static const union { unsigned char bytes[4]; uint32_t value; } o32_host_order =
    { { 0, 1, 2, 3 } };

#define O32_HOST_ORDER (o32_host_order.value)

#endif

Küçük üzerinden indian sistemleri kontrol eder

O32_HOST_ORDER == O32_LITTLE_ENDIAN

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • Ludique

    Ludique

    21 NİSAN 2009
  • Vagrant Records

    Vagrant Reco

    8 Mayıs 2006