реклама на сайте
подробности

 
 
> Как в C заставить enum считаться беззнаковым?
ViKo
сообщение Oct 5 2017, 09:38
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



В C (не C++) имею тип - перечисление с числами от 0 до 3.
Имею макрофункцию, где переменная типа того перечисления сдвигается на 30 влево.
При компиляции всплывает предупреждение, что результат выходит за пределы целого (в бит знака передвигается число).
Могу избавиться, дополнив ту же переменную в макрофункции явным приведением типа. Что странно - не результат сдвига, а саму переменную. И все чисто.
Но хотел бы прямо в перечислении задать беззнаковое целое. Явное задание чисел и дополнение ULL не помогает.
Можно заменить typedef enum { } на #define с дополнениями ULL, думаю, предупреждений не было бы. Не нравится.

В С++ вижу вариант enum : uint32_t { }.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Oct 5 2017, 12:47
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А как задать в Кейле (для файла) опцию, чтобы он стандарт C++11 принимал без предупреждения. Что ни добавляю (-std=c++11), не получается.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 5 2017, 18:22
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Попробуйте --cpp11 (нагуглил)


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016