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

  • GirlSanctuaryBlog

    GirlSanctuar

    28 Aralık 2011
  • hitcreatormusic2

    hitcreatormu

    21 Mayıs 2010
  • UniqueApps

    UniqueApps

    4 Ocak 2009