0
Другие записи за это число:
2019/12/29 - Рекламная лирика: Окна мигом
<< предыдущая заметкаследующая заметка >>
29 декабря 2019
гребаный C++

Слушайте, ну это мистика. В C++ Ардуино есть такой объект String, который в работе не в пример удобнее, чем char. Если нужно String превратить в char, то есть специальная функция .c_str() То есть, вот так работает:

<?php
String id
="ESP8266-test";String login="lleo";String password="h2dtGdGH";client.connect(id.c_str() ,login.c_str() ,password.c_str() );

Везде и всегда, где нужно char, это работало. Но лишь в одной из функций одной библиотеки PubSubClient эта херня не работает! А у меня все параметры хранятся именно в String и брать их нужно оттуда.

В примерах у них конечно всё работает:

<?php
client
.setServer("tailor.cloudmqtt.com",12399);

А вот так — нет:

<?php
String URL
="tailor.cloudmqtt.com";client.setServer(URL.c_str(),12399);

Почему — загадка. В PubSubClient.h обозначено так:

<?php
boolean connect
(constchar*id, constchar*user, constchar*pass);PubSubClient&setServer(constchar*domain,uint16_t port);

Вышел из положения, временно нагуглив какую-то дикую конструкцию:

<?php
String URL
="tailor.cloudmqtt.com";unsigned char*buf= newunsigned char[256];URL.getBytes(buf,256,0);
const
char*str= (constchar*)buf;client.setServer(str,12399);

Вот только это и сработало. Как думаете, что это, и почему во всех остальных функциях даже той же библиотеки все было норм?

UPD: Мне написали, что, вероятно, моя переменная исчезает раньше, чем функция ее использует... Это не совсем так. Волею судеб переменные этого рода у меня глобальные - они хранятся в объявленной глобально структуре как String имя и String значение. Специальная моя функция Srting CF(String имя) ищет "переменную" с этим именем и возвращает ее значение. То есть, в реальности это не URL.c_str(), а результат функции CF("url").c_str() Вот не пойму: с одной стороны все это реально хранится в глобальном пространстве и деться никуда не может. С другой стороны - это лишь некий результат, который вернула некая функция. И компилятор может его не хранить.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок

Комментарии к этой заметке скрываются - они будут видны только вам и мне.

Оставить комментарий