在下面的函数声明中,第二个参数是一个指向const数据的const指针。
ti_rc_t ti_uart_write_buffer(const ti_uart_t uart, const uint8_t *const data, uint32_t len);
下面是调用该函数的示例代码。为什么在BANNER_STR之前有(uint8_t *)
。这是将const指针传递给函数的常用语法吗?还有其他有效的语法吗?
#define BANNER_STR ("Hello, world!\n\n")
ti_uart_write_buffer(TI_UART_0, (uint8_t *)BANNER_STR, sizeof(BANNER_STR));
由于
答案 0 :(得分:2)
define BANNER_STR
是一个字符数组作为其类型,换句话说是一个字符串。因此,在函数调用中,您需要转换此参数以避免编译器警告,但这是调用此函数的有效方法。
另一种有效的语法是使用define directive来声明一个包含要写入的字符串的常量变量:
const char banner_str[] = "Hello, world!\n\n";
ti_uart_write_buffer(TI_UART_0, (uint8_t *)banner_str, sizeof(banner_str));