c语法将const指针传递给const数据到函数

时间:2016-02-08 14:43:34

标签: c function pointers arguments

在下面的函数声明中,第二个参数是一个指向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));

由于

1 个答案:

答案 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));