I'm back to programming in C ++ after many years and I have some doubts.
I created this function:
typedef std::function<const char *(void)> GetMessageLog;
void addLog(byte logLevel, GetMessageLog get)
{
if (loglevelActiveFor(LOG_TO_SERIAL, logLevel)) {
Serial.print(millis());
Serial.print(F(" : "));
Serial.println(get());
}
if (loglevelActiveFor(LOG_TO_SYSLOG, logLevel)) {
syslog(logLevel, get());
}
if (loglevelActiveFor(LOG_TO_WEBLOG, logLevel)) {
Logging.add(logLevel, get());
}
}
I would like to use it as follows:
addLog(LOG_LEVEL_INFO, [&]()
{
String log = F("HX711: GPIO: SCL=");
log += pinSCL;
log += F(" DOUT=");
log += pinDOUT;
return log.c_str();
});
The validity of log.c_str () is guaranteed until addLog ends or if something interrupts the normal program flow (any event handler), the string object is destroyed?
Aucun commentaire:
Enregistrer un commentaire