Компиляция для Wemos D1 mini с кодом Visual Studio

esp8266 vscode

Я даю Visual Studio Code (VSC) попробовать и получаю неожиданные результаты. У меня есть программа (скетч), которая прекрасно компилируется в Arduino IDE. Я создаю рабочую область в VSC, инициализирую проект, и после еще нескольких неудачных попыток я получаю компиляцию там, кажется, успешно:

[Done] Finished verify sketch - RanchMonitor2.ino

Но панель консоли показывает четыре "проблемы":

Как компиляция может быть успешной, если есть проблемы?

То же самое происходит и с одним из образцов - HelloServer.ino В этом случае проблемы являются неполным типом и memcpy_P не определен.

Я бы не подумал, что это должно иметь какое-то значение, но я работаю без платы, физически подключенной к USB-порту.

ОБНОВЛЕНИЕ: Я думаю, что "Проблемы" - это проблемы, выявленные Intellisense. Они появляются еще до попытки компиляции. Все, что мне нужно сделать, это открыть рабочее пространство и подождать несколько секунд, а затем появятся "проблемы". Поэтому я предполагаю, что это предупреждения Intellisense, а не ошибки компиляции. Добавление "ESP8266" в раздел Defines раздела c_cpp_properties.json избавился от ошибки "WifiManager" is undefined.

, 👍1

Обсуждение

Если компиляция завершается неудачно, она возвращает код ошибки 1 и не говорит "готово". Я проверил это, вызвав сбой, удалив точку с запятой в конце строки. См. раздел Правка в вопрос., @Llaves


1 ответ


1

Intellisense сообщает о "Проблемах" - они отличаются от ошибок времени компиляции. Просто потому, что Intellisense не может разрешить литерал или что-то еще, это не значит, что он не будет разрешен в компиляторе; таким образом, можно заставить IDE сообщить о проблеме, но все же иметь возможность успешно скомпилировать. В случае, описанном выше, два изменения в свойствах c_cpp_properties.json-файл предоставлял Intellisense необходимую информацию. В раздел forcedInclude был добавлен заголовочный файл для предоставления определений ПИНов. Литерал "ESP8266" был добавлен в раздел определения, чтобы указать тип процессора. Это определение используется во многих заголовочных файлах, поэтому оно должно быть известно Intellisense при чтении заголовков. Вот соответствующие разделы этого файла .json:

        "forcedInclude": [ 
            "C:\\Users\\David\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.1\\variants\\d1_mini\\pins_arduino.h"
        ],
        "defines": [
            "USBCON",
            "ESP8266"
        ],
,