Я не настолько хорошо осведомлен в Си, как я думал, но кто-нибудь может объяснить мне, что я здесь делаю неправильно?Я пишу программу для встроенной системы с использованием микроконтроллера Texas Instruments с использованием UARTS (асинхронный приемник-передатчик на микроконтроллере).Библиотеки UART обычно включаются, когда я строю проект.
В любом случае, вот моя проблема: у меня есть 4 функции, которые просто выводят строку на консоль, и мой код компилируется, но это дает мне предупреждения, а неошибки компиляции.
void foward(unsigned char *command) {
UARTPutString(UART_BASE, &command);
}
void reverse(unsigned char *command) {
UARTPutString(UART_BASE, &command);
}
void left(unsigned char *command) {
UARTPutString(UART_BASE, &command);
}
void right(unsigned char *command) {
UARTPutString(UART_BASE, &command);
}
Моя проблема в основном связана с тем, когда использовать указатель в простейшем смысле.Причина, по которой я использовал указатель для команды char *, заключается в том, что импортированная библиотека была написана таким образом, но я понятия не имею, почему мы должны использовать указатель на символ.И что вы указали в качестве второго аргумента в:
UARTPutString(UART_BASE, &command);
Когда я использую & или *?Я знаю, что указатели указывают на адрес в памяти чего-либо, но мне не нужно нажимать, когда мне нужно использовать *, & и т. Д. При использовании его в качестве параметров для функции.
Это предупреждение упоминается 21раз по какой-то причине:
Description Resource Path Location Type
#169-D argument of type "unsigned char **" is incompatible with parameter of type "unsigned char *" uartconsole.c /Command_Line_Interface line 82 C/C++ Problem
Спасибо за помощь!