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

  • MC JIN'S OLD YouTube CHANNEL

    MC JIN'S OLD

    2 Kasım 2008
  • Blu animations and other videos

    Blu animatio

    15 HAZİRAN 2007
  • Orson Wang

    Orson Wang

    28 EKİM 2006