Определяет ли gcc (windows + MinGW) SCNd8, SCNu8 в inttypes.h?

#include 
#include 

int main(void)
{
    int8_t int8;
    int16_t int16;
    int32_t int32;
    int64_t int64;

    uint8_t uint8;
    uint16_t uint16;
    uint32_t uint32;
    uint64_t uint64;

    scanf("%"SCNd8"%"SCNd16"%"SCNd32"%"SCNd64"%"SCNu8"%"SCNu16"%"SCNu32"%"SCNu64, 
            &int8, &int16, &int32, &int64, &uint8, &uint16, &uint32, &uint64);

    printf("%"PRId8"\n%"PRId16"\n%"PRId32"\n%"PRId64"\n%"PRIu8"\n%"PRIu16"\n%"PRIu32"\n%"PRIu64"\n",
            int8, int16, int32, int64, uint8, uint16, uint32, uint64);

    return 0;
}

Я не могу скомпилировать этот код с использованием последней версии gcc + MinGW + Netbeans + Windows. Netbeans сообщает, что «невозможно разрешить идентификаторы SCNd8 и SCNu8». Я не могу найти никаких ссылок на SCNd8 и SCNu8 на странице руководства gcc, хотя http://linux.die.net/include/inttypes.h определяет их. Я не получаю синтаксической ошибки при использовании PRId8 или PRIu8.

MinGW inttypes.h (без SCNd8 и SCNu8) (пример кода)

#define PRIXFAST64 "I64X"

#define PRIXMAX "I64X"
#define PRIXPTR "X"

/*
 *   fscanf macros for signed int types
 *   NOTE: if 32-bit int is used for int_fast8_t and int_fast16_t
 *   (see stdint.h, 7.18.1.3), FAST8 and FAST16 should have
 *   no length identifiers
 */

#define SCNd16 "hd"
#define SCNd32 "d"
#define SCNd64 "I64d"

#define SCNdLEAST16 "hd"
#define SCNdLEAST32 "d"
#define SCNdLEAST64 "I64d"

#define SCNdFAST16 "hd"    
5
задан hippietrail 6 April 2011 в 13:15
поделиться