Кривой компилятор?

Тема в разделе "Arduino & Shields", создана пользователем Span, 8 фев 2017.

  1. Span

    Span Нуб

    Текст ниже выдран из программы. Попробуйте скомпилировать удалив telNum в среде IDE.

    String telNum;

    long distan;

    long subDis;


    void setup() {


    }


    void loop()

    {

    Serial.println(telNum +" DIST " + distan +"SubDis "+subDis);

    }

    Это кривой компилятор или я что-то не понимаю? В VS проходит номально.
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    у тебя в Serial.println используется переменная telNum, поэтому если убрать ее инициализацию в начале скетча, при компиляции будет ошибка.
     
  3. Span

    Span Нуб

    Спасибо за подсказку, но я имел ввиду убрать из Serial.println, а не инициализацию.
     
  4. Span

    Span Нуб

    И еще, у меня одного или у всех странно ведет себя Shift/del в IDE 1.8.1
     
  5. Delit

    Delit Нерд

    Компилятор не кривой и сообщение об ошибки правильное.
     
  6. Span

    Span Нуб

    Поясните?
     
  7. mcureenab

    mcureenab Гуру

    Надо не иметь в виду, а конкретно спрашивать.

    Такой код не компилируется совершенно справедливо. У строковых литералов нет функции operator+, а у объектов String эта функция есть.

    Код (C++):
    Serial.println(" DIST " + distan +"SubDis "+subDis);
    Можно из литерала " DIST " сконструировать объект String и прицепить к нему остальные кусочки.

    Код (C++):
    Serial.println(String(" DIST ") + distan +"SubDis "+subDis);
    String("bla bla bla") и "bla bla bla" это совсем не одно и тоже.
     
  8. mcureenab

    mcureenab Гуру

    Чё?
     
  9. Span

    Span Нуб

    Спасибо за пояснение. Нигде не нашел преобразование типов для этого компилятора, и вообще, кругом какая-то разрозненная информация по нему. Последние годы я писал на Шарпе для другого железа. Понадобился короткий проект на Arduino. Я его почти закончил, но все равно буду признателен, если порекомендуете серьезную литературу по Arduino, желательно, не бумажную.
     
  10. mcureenab

    mcureenab Гуру

    По C++ нет литературы??? :eek:

    Все что сверху C++ наверчено для Arduino описано на arduino.cc. Если в документации что то не ясно, в исходниках библиотек можно порыться. Они не большие.
     
  11. Span

    Span Нуб

    На Сях писал лет 15 назад, если не больше, тонкости забыл. За ссылку спасибо, но там больше рекламы, чем серьезной литературы. Нет ли законченных изданий где-нибудь? Можно на Английском.
     
  12. mcureenab

    mcureenab Гуру

    На сайте мало "серьезной литературы" или реклама раздражает?

    https://www.arduino.cc/en/Reference/HomePage

    https://www.arduino.cc/en/Tutorial/HomePage
     
  13. Span

    Span Нуб

    Там самая правильная информация по функциям, какие Си-шные функции действуют и какие не действуют? На разных сайтах список функций разный.
     
  14. mcureenab

    mcureenab Гуру

    Это скорее краткий справочник по C++ и официальный справочник по функциям ядра Ардуино. Для начала достаточно. А дальше в С++ вникать надо.

    В сети можно найти ядра для разных микроконтролеров, типа ATtiny, которые на Arduino не используются. В этих ядрах могут быть реализованы не все функции оригинального ядра.

    Ядро Arduino это по сути функция main, и несколько дополнительных функций для работы с фичами МК.

    https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/main.cpp

    "какие не действуют", не встречал.
     
  15. Span

    Span Нуб

    Спасибо за подробный ответ.
     
  16. Unixon

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

  17. Span

    Span Нуб

    Спасибо за ссылку.
    Привык я к хорошему на C#, не очень приятно вспоминать C++. Взять, к примеру, мою ошибку: у строковых литералов и String одна основа: байт в формате ASCII. Так зачем танцы с бубнами для их сложения? В Шарпе все эти сложения и преобразования типов решаются легко и изящно.
     
  18. mcureenab

    mcureenab Гуру

    String более сложный объект чем char []. Если нужен только char[] то нет смысла создавать String.
     
  19. Span

    Span Нуб

    Они создаются одинаково легко. Зачем геморрой при выводе уже созданных объектов? Шарп облегчает рутину, освобождая человека для более важных дел.
     
  20. mcureenab

    mcureenab Гуру

    Пишите на C#. Какие проблемы???