Как такое возможно?

Тема в разделе "Arduino & Shields", создана пользователем Vetrinus, 17 июл 2016.

  1. Vetrinus

    Vetrinus Гик

    Вот тут увидел выражение вида
    Код (C++):
    int mode=START;
    Это как?
     
  2. ostrov

    ostrov Гуру

    Например так:
    Код (C++):
    #define START     15
     
  3. Vetrinus

    Vetrinus Гик

    Это было первое, о чем я подумал, но в листинге я define не видел
     
  4. ostrov

    ostrov Гуру

    Код (C++):
    int START = 15;
    Или вообще в библиотеке какой нибудь из подключенных.
     
  5. DIYMan

    DIYMan Guest

    ещё может быть не define, а что-то типа

    Код (C++):
    enum {START, STOP, CONTINUE};
     
    ИгорьК нравится это.
  6. ostrov

    ostrov Гуру

    Странно от гика слышать такие вопросы.
     
  7. Vetrinus

    Vetrinus Гик

    Ну, вам странно. Мне норм. Да и гик, это только выражение количества сообщений и не более. Тут есть "гики", которые на нуба еле-еле тянут. Я же не понял, как можно переменной типа int присваивать какое-то константное char выражение. Сейчас буду искать, что бы почитать по этому поводу.
     
  8. ostrov

    ostrov Гуру

    Это не выражение. Это или имя переменной или определение.
     
  9. Vetrinus

    Vetrinus Гик

    Во всей этой ситуации я понял только то, что есть переменная, которая хранит состояние системы.
    И несколько по констант, которые используются сугубо для того, чтобы переменной состояния присваивать не цифру:
    Код (C++):
    state=15;
    а переменную:
    Код (C++):
    int START=15;
    state=START;
    Ради чего это делается? Семантичность, чтоли? Как по мне, бред какой-то.
    Есть тут на форуме борцы за чистоту и грамотность кода? Растолкуйте мне, пожалуйста, на кой это нужно?
     
  10. ANV

    ANV Гуру

    Делается для читаемости кода. Вы через неделю не вспомните, состояние START - это 15 или 29

    И как вы написали int START - так тоже не правильно, это должна быть константа, а не переменная
     
    ostrov нравится это.
  11. ostrov

    ostrov Гуру

    Сразу учитесь писать код грамотно и понятно. С комментариями и мнемонически понятными данными. Это касается, например, пинов. Так не правильно:
    Код (C++):
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);
    Так правильно:
    Код (C++):
    #define LED  13  // светодиод

    pinMode(LED, OUTPUT);
    digitalWrite (LED, HIGH); // включаем светодиод
    Хоть для компилятора это одно и то же, и исполняемый код будет одинаковым, для человека разница огромная. И разобраться проще и поменять данные в одной строке, а не во всей программе.
     
  12. Vetrinus

    Vetrinus Гик

    Короче, мы друг друга недопоняли. Я вам про Фому, вы мне про Ерему, причем то, что я и так знаю и использую. Ладно, не важно.
     
  13. DIYMan

    DIYMan Guest

    Ну вот смотрите: помимо читабельности, есть такое понятие, как проверка на этапе компиляции, и этим средством часто пользуются. На примере enum:

    Код (C++):
    typedef enum {ONE, TWO, THREE} DIGITS;

    DIGITS dig = 4; // ошибка
    DIGITS dig = TWO; // корректно
    Анонимные перечисления также часто используются для подержания читабельности кода:
    Код (C++):
    enum {UNKNOWN, START, STOP, ALARM};

    int machineState = UNKNOWN;

    switch(machineState)
    {
      case START: echo "Started!"; break;
    ...
    }
     
    Vetrinus нравится это.
  14. Unixon

    Unixon Оракул Модератор

    Это еще что. Вспомнить, что 15 - это именно START, а не что-то другое будет гораздо сложнее. :)