• [^] # Re: Un problème de macro ?

    Posté par (site web personnel) . En réponse au message Redefinition of typedef. Évalué à 2. Dernière modification le 30 décembre 2012 à 17:53.

    Elles diffèrent, bien évidement !

    Dans poker_defs.h (le source est ici):

    #undef USE_INT64
    #ifdef HAVE_UINT64_T
    typedef uint64_t uint64;
    #define USE_INT64 1
    #elif defined(HAVE_LONG_LONG)
    typedef unsigned long long uint64;
    #define USE_INT64 1
    #elif SIZEOF_LONG == 8
    typedef unsigned long uint64;
    #define USE_INT64 1
    #elif defined(UINT64_TYPE)
    typedef UINT64_TYPE uint64;
    #define USE_INT64 1
    #endif
    
    

    et pour ocaml (j'ai pas trouvé de source en ligne ):

    #if SIZEOF_INT == 4
    typedef int int32;
    typedef unsigned int uint32;
    #define ARCH_INT32_PRINTF_FORMAT ""
    #elif SIZEOF_LONG == 4
    typedef long int32;
    typedef unsigned long uint32;
    #define ARCH_INT32_PRINTF_FORMAT "l"
    #elif SIZEOF_SHORT == 4
    typedef short int32;
    typedef unsigned short uint32;
    #define ARCH_INT32_PRINTF_FORMAT ""
    #else
    #error "No 32-bit integer type available"
    #endif
    #if defined(ARCH_INT64_TYPE)
    typedef ARCH_INT64_TYPE int64;
    typedef ARCH_UINT64_TYPE uint64;
    #else
    # ifdef ARCH_BIG_ENDIAN
    typedef struct { uint32 h, l; } uint64, int64;
    # else
    typedef struct { uint32 l, h; } uint64, int64;
    # endif
    #endif
    
    

    Est-ce que ce genre d'incompatibilité arrive souvent ? Est-ce un bug ?