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

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • Matt Steffanina

    Matt Steffan

    1 EYLÜL 2011
  • ODN

    ODN

    26 Kasım 2006