Как передать перечисление в функцию ?

Kakmyc
Offline
Зарегистрирован: 15.01.2018

В общем то при попытке сообщает об ошибке.

Kakmyc
Offline
Зарегистрирован: 15.01.2018
enum integer{ZERO,ONE,TWO,THREE,FOUR,FIVE};
enum integer val1=TWO;
enum integer val2=FOUR;

int func (enum integer x,enum integer y){ 
				return x*y;}

void setup(){
				Serial.begin(9600);
				Serial.print(func(val1,val2));
}

void loop(){
				
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

typedef-ни enum - жить станет проще.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017
enum class enMyEnum_t: uint8_t {...};

Void myFunc(enMyEnum_t Param);

 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

А без классов никак ?
Другой компилятор кушает, без классов...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Kakmyc пишет:

В общем то при попытке сообщает об ошибке.

enum integer{ZERO,ONE,TWO,THREE,FOUR,FIVE};
enum integer val1=TWO;
enum integer val2=FOUR;

int func (enum integer x,enum integer y){ 
				return x*y;}

void setup(){
				Serial.begin(9600);
				Serial.print(func(val1,val2));
}

void loop(){
				
}

Вы забыли сказать:

1. Чем (каким компилятором) компилируете
2. Привести полный  текст сообщения об ошибке.

Если бы Вы это сделали, ответ был бы намного информативнее, а так - сам себе ленивый буратино.

У меня этот текст отлично компилируется безо всяких ошибок и предупреждений (IDE 1.8.12 c опциями "из коробки").

Можете попробовать убрать слово enum из строки №5 (в обоих местах) - оно там не нужно, может, поможет.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Kakmyc пишет:
А без классов никак ? Другой компилятор кушает, без классов...

enum cllass это тот же enum, тока с ограничением области видимости входящих в него констант и явным указанием типа хранения. Для доступа к членам константам нада использовать квалификатор ::

Kakmyc
Offline
Зарегистрирован: 15.01.2018

ЕвгенийП пишет:

Kakmyc пишет:

В общем то при попытке сообщает об ошибке.

enum integer{ZERO,ONE,TWO,THREE,FOUR,FIVE};
enum integer val1=TWO;
enum integer val2=FOUR;

int func (enum integer x,enum integer y){ 
				return x*y;}

void setup(){
				Serial.begin(9600);
				Serial.print(func(val1,val2));
}

void loop(){
				
}

Вы забыли сказать:

1. Чем (каким компилятором) компилируете
2. Привести полный  текст сообщения об ошибке.

Если бы Вы это сделали, ответ был бы намного информативнее, а так - сам себе ленивый буратино.

У меня этот текст отлично компилируется безо всяких ошибок и предупреждений (IDE 1.8.12 c опциями "из коробки").

Можете попробовать убрать слово enum из строки №5 (в обоих местах) - оно там не нужно, может, поможет.

Ну у меня вообще ArduinoDroid из под андроида.
Не представляю даже какая там версия gcc.
Текст ошибки :"use of enum "integer" without pervious declaration".
Люди подсказали, что в IDE 1.6.4 ошибка та же.

sadman41
Offline
Зарегистрирован: 19.10.2016

v1.6.11 - OK

typedef enum {ZERO, ONE, TWO, THREE, FOUR, FIVE} numberList_t;
numberList_t val1 = TWO;
numberList_t val2 = FOUR;

int func (numberList_t x, numberList_t y) {
  return x * y;
}

void setup() {
  Serial.begin(9600);
  Serial.print(func(val1, val2));
}

void loop() {

}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Kakmyc пишет:
Текст ошибки :"use of enum "integer" without pervious declaration".

Вот с этого нужно было начинать. Только, это не всё, я же Вам писал

ЕвгенийП пишет:
полный  текст сообщения об ошибке

Вам непонятно первое слово этой фразы? Или Вы умышленно издеваетесь? Там ведь ещё и номер строки был, а он - Вы не поверите, иногда помогает понять в чём дело!

Ну, а смысл ошибки вполне ясен - это привет от разработчиков IDE - некоторые версии IDE создают объявления всех функций в начале файла, чтобы блондинки и беременные доярки могли определять функции где попало. В результате получилось, что тип используется до объявления. Про это (и про то, что делать) на форуме писали 100500 раз. Поиск в правом верхнем углу.

Но впредь, без ПОЛНОГО текста сообщения я Ваши посты даже читать не буду.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

И чем вам в данном случае поможет полный текст ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Kakmyc пишет:

 

И чем вам в данном случае поможет полный текст ?

Мне - тем, что в нём есть номера строк в которых компилятор видит ошибки.

Но на самом деле, плевать на то, чем он поможет мне. Гораздо важнее, что Вам он поможет получить ответ, а не быть посланным лесом с неясным вопросом.

---------

И ещё. Какая Вам разница чем это мне поможет? Человек, который хочет Вам помочь попросил предоставить ему информацию. Вам трудно? Если трудно, то решайте свои проблемы сами.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

ЕвгенийП пишет:

Kakmyc пишет:

 

И чем вам в данном случае поможет полный текст ?

Мне - тем, что в нём есть номера строк в которых компилятор видит ошибки.

Но на самом деле, плевать на то, чем он поможет мне. Гораздо важнее, что Вам он поможет получить ответ, а не быть посланным лесом с неясным вопросом.

---------

И ещё. Какая Вам разница чем это мне поможет? Человек, который хочет Вам помочь попросил предоставить ему информацию. Вам трудно? Если трудно, то решайте свои проблемы сами.

А что кто то за меня будет решать мои проблемы ?
И вообще вопрос был простой и ответ должен быть такой же простой.
В данном случае :"именно так, как подключено, но не все компиляторы такое проглотят".
Если у меня из четырех мобильных приложений 2 спокойно это переваривают, одно выдает предупреждение , но при этом компилируется, и лишь последнее ругается матом, значит проблема не в написанном а в том как это интерпретирует программа.
Да, можно конечно через классы и собственные типы скормить, но это лишнее. С тем же успехом можно в качестве аргумента функции указывать целочисленный тип, а передавать тот же декларатор ;

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Мне надоела эта дискуссия и я её прекращаю (можете засчитывать слив). Если Ваша религия запрещает Вам дать помогающему Вам человеку ту информацию, о которой он попросил - обсудите это со своим духовным наставником, я тут ничем помочь не могу, к сожалению. Хорошего дня!

Green
Offline
Зарегистрирован: 01.10.2015

Та ППЦ! Кактус, ну это же вам надо или кому то? У вас с логикой всё в порядке? Да ладно бы какой то начинающий... Поразительно.(

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Green пишет:

Та ППЦ! Кактус, ну это же вам надо или кому то? У вас с логикой всё в порядке? Да ладно бы какой то начинающий... Поразительно.(

Какая логика может быть по пятницам ?
Логика, это утром следующего дня задать то же вопрос разработчику ПО.

Green
Offline
Зарегистрирован: 01.10.2015

А, это да. Тут я согласен). Сам такой бываю.(