тип long long. почему нестандартный?

Тема в разделе "LANGS.C", создана пользователем cupuyc, 25 май 2010.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    завожу переменную типа unsigned long long, компилятор выдаёт предупреждение:
    , но, тем не менее, адекватно с ней работает.

    Вот думаю, может лучше определить структуру из двух лонгов?
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    я всегда пользовался LONGLONG:
    Код (Text):
    1. typedef __int64 LONGLONG;
    2. typedef unsigned __int64 ULONGLONG;
     
  3. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    long long это С99, который, на сколько я знаю, до сих пор слабо поддерживается (где-то лучше, где-то хуже). Что за компилятор?
     
  4. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    это читерство поддерживается только microsoft.
     
  5. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Значит надо подключить stdint.h и использовать int64_t.
     
  6. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    2maksim_
    сейчас по умолчанию считается, что человек пишет портабельное ПО? ^______^

    2Rel
    до кучи LONG_INTEGER, но это уже несколько другое ))
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Я пользую такое:
    Код (Text):
    1. //I need a 64-bit integer
    2. #ifdef _MSC_VER
    3.     typedef unsigned __int64 uint64_t; // Define it from MSVC's internal type
    4.     typedef __int64 int64_t;
    5. #else
    6.     #include <cstdint>      // Use the C99 official header
    7. #endif
     
  8. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    сейчас по умолчанию считается, что человек должен писать только на VC? или же читерство, предложенное microsoft по умолчанию становится стандартом?
     
  9. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    я специально для msvc скачал портабельный stdint.h

    http://www.azillionmonkeys.com/qed/pstdint.h

     
  10. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    в нем он определен так
    Код (Text):
    1. #if !defined (stdint_int64_defined)
    2. # if defined(__GNUC__)
    3. #  define stdint_int64_defined
    4.    __extension__ typedef long long int64_t;
    5.    __extension__ typedef unsigned long long uint64_t;
    6. #  define UINT64_C(v) v ## ULL
    7. #  define  INT64_C(v) v ## LL
    8. #  ifndef PRINTF_INT64_MODIFIER
    9. #   define PRINTF_INT64_MODIFIER "ll"
    10. #  endif
    11. # elif defined(__MWERKS__) || defined (__SUNPRO_C) || defined (__SUNPRO_CC) || defined (__APPLE_CC__) || defined (_LONG_LONG) || defined (_CRAYC) || defined (S_SPLINT_S)
    12. #  define stdint_int64_defined
    13.    typedef long long int64_t;
    14.    typedef unsigned long long uint64_t;
    15. #  define UINT64_C(v) v ## ULL
    16. #  define  INT64_C(v) v ## LL
    17. #  ifndef PRINTF_INT64_MODIFIER
    18. #   define PRINTF_INT64_MODIFIER "ll"
    19. #  endif
    20. # elif (defined(__WATCOMC__) && defined(__WATCOM_INT64__)) || (defined(_MSC_VER) && _INTEGRAL_MAX_BITS >= 64) || (defined (__BORLANDC__) && __BORLANDC__ > 0x460) || defined (__alpha) || defined (__DECC)
    21. #  define stdint_int64_defined
    22.    typedef __int64 int64_t;
    23.    typedef unsigned __int64 uint64_t;
    24. #  define UINT64_C(v) v ## UI64
    25. #  define  INT64_C(v) v ## I64
    26. #  ifndef PRINTF_INT64_MODIFIER
    27. #   define PRINTF_INT64_MODIFIER "I64"
    28. #  endif
    29. # endif
    30. #endif
     
  11. make

    make New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2009
    Сообщения:
    59
    До кучи boost/cstdint.hpp ;)
     
  12. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    make

    плюсадин
     
  13. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    2maksim_
    ну наверное я не зря спросил про компилятор?
     
  14. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    компилятор - IAR
     
  15. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    maksim_
    И ещё - DJGPP.
     
  16. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Заюзал cstdint. Противные сообщения вылезать перестали.
     
  17. seda

    seda New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2010
    Сообщения:
    47
    Адрес:
    Россия
    gcc поддерживает. long long, unsigned long long. Я думаю вообще на многих сейчас поддерживается такой тип
     
  18. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Об чем вообще спор? Студия поддерживает, gcc поддерживает, icc поддерживает. Чо еще нада-та? )
     
  19. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    _DEN_
    #14
     
  20. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    cupuyc
    Слушай, а обязательно такой гадостью пользоваться? Почему не GCC, например?
    Я от IAR просто в полуобмороке валялся, когда по работе пришлось на нем компилить. Эта падла иногда такое заворачивает, что у меня чуть матюги не исчерпались. >8-E]