Подскажите с инверсией.

Тема в разделе "Arduino & Shields", создана пользователем varvik85, 23 фев 2013.

  1. Unixon

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

    С помощью #define можно подставить любую ерунду, а компилятору неплохо бы помогать осуществлять контроль типов данных.
     
  2. pyro

    pyro Гик

    А по подробней о помощи, можно?
     
  3. Unixon

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

    Чтобы компилятор мог все проверить и корректно сообщить об ошибках, и он и вы должны видеть один и тот же текст программы. Макросы скрывают от вас истинный текст программы. Препроцессору то все равно, он просто выполняет подстановку текста. Если подстановка такая простая, как назначение номера вывода, то разница незаметна, но если макросы сложные и в разных местах программы, то могут начаться проблемы. Макросы не проверяются на наличие синтаксических ошибок, поэтому если случайно написать

    #define PIN_LED 1);

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

    А вот если написать

    const int PIN_LED = 1);

    то компилятор сразу ткнет носом в правильное место.
    Пример, конечно, слишком простой...
     
  4. pyro

    pyro Гик

    Спасибо, понял.