У меня есть API, который запрашивает char*
, это моя функция API:
CANMessage(unsigned _id, const char* _data, char _len = 8)
Более подробная информация доступна здесь: https://os.mbed.com/docs/mbed-os/v5.11/mbed-os-api-doxy/classmbed_1_1_c_a_n_message.html
Я бы хотел вызвать эту функцию из другой функции, но я запутался в const char*
и касте. Я хочу вызвать эту функцию из функции foo()
, вот так:
void foo(unsigned int id, /*???*/ data, char len) {
CANMessage(id, data, len)
}
Так что мне нужно передать id, data и len в функцию foo. Моя проблема в том, что входящий data
имеет тип uint8_t
. Я получил вектор uint8_t
, где адрес первого элемента - это тот, который мне нужно передать:
vector<uint8_t> dta;
Который я пытался передать как &dta[0]
: foo(idNo, &dta[0], length)
С функцией foo следующим образом:
void foo(unsigned int id, uint8_t* data, char len) {
CANMessage(id, (char*)data, len)
}
Но я получаю "Аргумент типа std :: uint8_t * несовместим с параметром типа char *
Как передать его как const char*
, когда функция foo
, которая его вызывает, принимает uint8_t*
?
Обратите внимание, я не могу изменить типы, dta должна остаться vector<uint8_t>
.