Как внедрить переменные среды в файл CPP, используя Visual Code и Platform IO? - PullRequest
0 голосов
/ 30 сентября 2018

Я только начинаю с того, что исходил из истории JS.

Я смотрю на разработку IoT и хочу настроить свое собственное репо без загрузки SSID и пароля моего личного WiFi.

Платформа IO предлагает это platformio.ini, как я понимаю, для установки build_flags.

  build_flags = 
     -D SSID="MySSID"

Я не знаю, как получить к ним доступ из моего файла CPP.Я хочу вставить значение из SSID флага сборки в мой * .cpp файл.

  #define SSID

  void loop()
  {
    Serial.println(SSID);
  }

Выше ничего не записывается в последовательный монитор.

Что я делаю неправильно?Код компилируется.

1 Ответ

0 голосов
/ 01 октября 2018

Как упомянул @Azeem, вы переопределяете SSID на пустое значение.Используя подобный препроцессор, вы должны сначала проверить, существует ли значение, а если нет, назначить ему значение по умолчанию.

Вот простой пример C ++:

#include <iostream>

#ifndef SSID
#define SSID "(SSID not defined)"
#endif

int main() 
{
    std::cout << "SSID value: " << SSID << std::endl;
    return 0;

}

Вы можете скомпилировать и запуститькод с:

g++ main.cpp -o main && ./main

Как вы видите, он печатает (SSID not defined).

Теперь, скомпилируя и выполнив следующее:

g++ main.cpp -o main -DSSID='"Hello, World!"' && ./main

выведет: SSID value: Hello, World!

Если вы хотите узнать больше о директивах препроцессора, cplusplus.com имеет очень хороший учебник

Кроме того, не забудьте запустить Serial вvoid setup().

...