Передать значение enum в функцию

Oreshek
Oreshek аватар
Offline
Зарегистрирован: 19.04.2020

Подскажите пожалуйста, можно ли в C++ как-нибудь передать значение enum в функцию?

После много часового поиска инфы в гугле так ни чего и не нашёл(

rkit
Offline
Зарегистрирован: 23.11.2016

Так же, как и любое другое значение.

Oreshek
Oreshek аватар
Offline
Зарегистрирован: 19.04.2020

Чтобы можно было сделать как то так:

myFunc( txt );     
//Или так
myFunc( AUTO );

Помогите пожалуйста.

 

Oreshek
Oreshek аватар
Offline
Зарегистрирован: 19.04.2020
void myFunc(enum {AUTO, txt} mode) {...}

Так не работает

rkit
Offline
Зарегистрирован: 23.11.2016

Ну так для начала нужно понять, как енумы вообще объявляются.

enum mode_t {AUTO, txt};
void myFunc(enum mode_t mode); // потому что arduino ide - говно и позорище

void myFunc(enum mode_t mode) {
 ...
}

 

Oreshek
Oreshek аватар
Offline
Зарегистрирован: 19.04.2020

Ааа, спасибо большое, как то даже не догадался так сделать.

Про ide cогласен))

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

rkit пишет:

void myFunc(enum mode_t mode); // потому что arduino ide - говно и позорище

Всё проще: "потому, что Вы не умеете его готовить".

У тех, кто умеет, работает и без этого, например:


enum TState { S_UNKNOWN, S_RUNNING, S_STOPPED };

void printState(TState st) {
	Serial.print(st);
}

void setup(void) {
	Serial.begin(115200);
	printState(S_RUNNING);
}

void loop(void) {}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Oreshek пишет:

Про ide cогласен))

Пожалел, что выложил Вам решение.

Всякий раз, прежде, чем заявлять подобные вещи, вспоминайте про танцора и яйца, и трижды думайте, прежде чем газировать лужу.

rkit
Offline
Зарегистрирован: 23.11.2016

Те, кто умеет, не работают с кривым говном.

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

rkit пишет:

Те, кто умеет, не работают с кривым говном.

Т.е. по примеру сказать нечего? А признать, что ошибся религия не позволяет? Ну-ну :-)

rkit
Offline
Зарегистрирован: 23.11.2016

В каком месте я ошибся? В том, что сплясал с бубном вокруг нерабочей ИДЕ не так, как ты предпочитаешь плясать? Я предпочитаю не плясать совсем.

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

rkit пишет:

В каком месте я ошибся? В том, что сплясал с бубном вокруг нерабочей ИДЕ не так, как ты предпочитаешь плясать? 

Нет, в том, что вообще плясать начал вокруг совершенно нормально работающей ИДЕ.

rkit пишет:

Я предпочитаю не плясать совсем.

Так и не надо. Я вот не пляшу и у меня всё работает. В моём примере никаких плясок нет - просто написано так, как положено и как рекомендуется во всех учебниках языка.

rkit
Offline
Зарегистрирован: 23.11.2016

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

просто написано так, как положено и как рекомендуется во всех учебниках языка.

Фантазируй больше

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

Понятно. Новый Великий. Добро пожаловать.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

rkit пишет:

Ну так для начала нужно понять, как енумы вообще объявляются.

enum mode_t {AUTO, txt};
void myFunc(enum mode_t mode); // потому что arduino ide - говно и позорище

void myFunc(enum mode_t mode) {
 ...
}

 

Потому что кто-то не умеет в тайпдефы, зато как говном кого полить - первый. На, учись, профессор:

typedef enum { AUTO, TXT } MyEnumType;

void func(MyEnumType t) {}

Да и без тайпдефа будет работать, собственно - согласен с Евгением полностью, что у кого-то кривые руки.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

rkit пишет:

Те, кто умеет, не работают с кривым говном.

Ну то есть GCC - кривое говно, я правильно тебя понял, криворучка? Чтобы ты знал, Arduino IDE - простенький ТЕКСТОВЫЙ РЕДАКТОР, представляешь? Надеюсь, тебе разорвёт там чего-нибудь от этого великого открытия.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

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

Понятно. Новый Великий. Добро пожаловать.

Да это старый и есть, по ходу. Обиженный же, и всё ему не так. Попахивает старым труханом, которому всё неймётся.