Использование строк внутри кода расширений mBlock
Следующий вопрос касается сторонней среды программирования Arduino mBlock и создания для нее расширений. Я надеюсь, что среди вас есть те, кто с этим знаком.
Недавно я делал расширение для mBlock, которое можно использовать для написания кода для Arduino, когда столкнулся с этим препятствием. Я попытался написать функцию внутри оператора "work":"".
Это выглядело так:
"work":"Serial.print("Привет, мир");"
Не удалось импортировать расширения из-за кавычек вокруг строки Hello world. Я попробовал удалить кавычки, расширение успешно добавлено, но программа не заработала, поскольку кавычки необходимы внутри кода C++ для определения строки.
Есть ли способ добавить их в расширения, не испортив код?
@user29519, 👍0
1 ответ
Лучший ответ:
Если это формат JSON, вы можете попробовать использовать одинарные кавычки вместо двойных:
"work":'Serial.print("Hello world");'
В качестве альтернативы вы можете избежать внутренних кавычек:
"work":"Serial.print(\"Hello world\");"
- Использование StringStream в скетче Arduino
- Чтение строки, разделенной запятыми
- Как на самом деле объединить две строки?
- Как улучшить этот Код? (или как передать строку Char в функцию, чтобы она вела себя как переменная)
- Еще один простой и глупый вопрос о строках C++
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- Что лучше использовать: #define или const int для констант?
- Функции со строковыми параметрами
Ни одно из упомянутых решений, похоже, не работает. Расширения по-прежнему не загружаются. Расширение, которое я пишу, имеет расширение .s2e, если это поможет (я не совсем знаком с файлами такого типа)., @user29519
Глядя на существующие библиотеки, экранирование должно работать. Это из файла Serial.s2e:
"work":"Serial.print({0});Serial.print(\"=\");Serial.println({1});\n"
, @MajenkoПо какой-то причине на этот раз это сработало. Я не знаю почему, но давайте просто продолжим. Спасибо., @user29519