С GCC, я мог бы сделать упаковку перечислений с использованием атрибут ((упакована)), но это, кажется, ближе всего в MSVC, #pragma пакет, не работает на перечислений. Кто-нибудь знает, как упаковать перечисления в 1 байт вместо обычного целого размера?Упаковка перечислений с помощью компилятора MSVC++
ответ
Это MSVC конкретны:
// instances of this enum are packed into 1 unsigned char
// warning C4480: nonstandard extension used
enum foo : unsigned char { first, second, last };
assert(sizeof(foo) == sizeof(unsigned char));
// instances of this enum have the common size of 1 int
enum bar { alpha, beta, gamma };
assert(sizeof(bar) == sizeof(int));
Для справки смотрите здесь: MSDN -> enum
Я думаю, что это C#. Я никогда не видел такой синтаксис на C++. Если он работает, это действительно здорово. ll воздержитесь от downvoting, потому что я не уверен. – rmeador
возможно, MSVC уже реализует C++ 0x, но тогда это должно быть «enum» класса, если я не ошибаюсь – lothar
Это расширение C++/CLI: http://msdn.microsoft.com/ en-us/library/ms173702.aspx – Eclipse
- 1. Обновление компилятора MSVC
- 2. MSVC++ Ошибка компилятора C2143
- 3. Ошибка компилятора MSVC++ C2892?
- 4. Выполнение компилятора MSVC GCC?
- 5. Ошибка компилятора MSVC и FreeGlut
- 6. MSVC++ Preprocessor - Как вывести значение define с помощью макроса компилятора?
- 7. Как правильно настроить параметры компилятора MSVC с помощью QtCreator?
- 8. Принудительная сглаженная битпольная упаковка в MSVC
- 9. Вызов компилятора MSVC из расширения VS
- 10. аннотации компилятора google закрытия для передачи перечислений
- 11. __VA_ARGS__ расширение с помощью MSVC
- 12. Includepaths для Qt-заголовков в Windows с использованием компилятора msvc
- 13. MSVC терпит неудачу с ошибками компилятора без компиляции любых источников
- 14. Ошибка компилятора MSVC C2688: проблема с корпусом Microsoft C++ ABI?
- 15. std :: перемещение std :: unique_ptr в stl контейнеры. (Проблема компилятора MSVC)
- 16. Как отсортировать список перечислений с помощью перечислений enum в C#?
- 17. Странного поведения enable_if с помощью вложенных классов (? MSVC компилятора ошибки или функции)
- 18. Запуск MSVC-компилятора из Java-кода дает ошибку
- 19. MSVC: какие переключатели компилятора влияют на размер структур?
- 20. Ошибка виртуального метода с MSVC
- 21. Что такое флаг -D-компилятора C++ (clang, GNU, MSVC)
- 22. MSVC/FA GCC эквивалент
- 23. Зависимости заголовков в qmake с помощью MSVC Express
- 24. Упаковка нескольких классов enum
- 25. Раздражающая упаковка текста с помощью GDI & Direct3D
- 26. Установка libfprint и упаковка с помощью Jlibfprint
- 27. Упаковка плагина twistd с помощью pyinstaller
- 28. Простая упаковка кода C с помощью cython
- 29. Ссылка временно в msvc
- 30. ошибка компилятора с помощью tryRecv
при условии, что с помощью его (если он существует) приведет к не переносимый код, то почему бы вам нужно использовать это в любом случае ? – lothar
Потому что иногда переносимость не имеет значения, и необходима совместимость с другой системой. Несколько лет назад я хотел этого, когда общался через общую RAM до платы 68K (чей компилятор поддерживал задание размера перечисления). –
@Steve Fallows В этом случае я предпочел бы (набор) функций для преобразования из перечня C в внешний формат и из него. это безопаснее (поскольку могут потребоваться преобразования endian (не в этом случае, но вообще) и переносимые. – lothar