У меня проблемы с пониманием того, что происходит.Я работаю над интерфейсом командной строки для маленького робота, использующего микроконтроллер Texas Instruments, и один из моих профессоров порекомендовал множество указателей на функции, поэтому я так и сделал.Мой код компилируется, но я получаю предупреждение:
#176-D expression has no effect uartconsole.c
Вот моя функция, моя функция:
void startConsole(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
Configure_UART1();
// Enables port, sets pins 1-3 (RGB) pins for output
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
unsigned char *input;
void (*p[4])(unsigned char);
p[0] = forward;
p[1] = reverse;
p[2] = left;
p[3] = right;
/* printf goes to the UART com port */
printf("\f======== Welcome to the Console ========\n");
printf("Enter a command followed by return.\n"
"Type help for a list of commands.\n\n");
/* Loop forever receiving commands */
while(true) {
/* Get the user's input */
if(UARTCharsAvail(UART_BASE)) {
input = UARTCharGet(UART_BASE);
switch(*input) {
case 'fo':
(*p[0]);
case 're':
(*p[1]);
case 'le':
(*p[2]);
case 'ri':
(*p[3]);
default:
UARTPutString(UART_BASE, "\nCommand Unknown\n\r");
}
}
Как я могу исправить это предупреждение?Я просмотрел предыдущие сообщения Stackoverflow, касающиеся указателей на функции, но я не понимаю, почему это все еще приводит к моей ошибке.