比如让它给下面的代码生成注释
[C] 纯文本查看 复制代码 void print_array_16_per_line(const char *name, const uint8_t *array, size_t len)
{
SEGGER_RTT_printf(0, "%s:\n", name);
for (size_t i = 0; i < len; i++)
{
SEGGER_RTT_printf(0, "0x%02X", array[i]);
if ((i + 1) % 16 == 0 || i == len - 1)
{
SEGGER_RTT_printf(0, "\n");
}
else
{
SEGGER_RTT_printf(0, " ");
}
}
SEGGER_RTT_printf(0, "\n"); /* 额外空行分隔两个数组 */
}
AI生成后
[C] 纯文本查看 复制代码 /**
* @brief 以每行16个十六进制数的格式打印数组内容
*
* 该函数通过SEGGER RTT输出数组的名称和内容。数组中的每个字节都以
* "0xXX"的十六进制格式打印,每行显示16个数值,最后一个数值后自动换行。
*
* @param[in] name 数组名称字符串,将显示在输出的第一行
* @param[in] array 指向要打印的uint8_t类型数组的指针
* @param[in] len 数组的长度(字节数)
*
* @note 输出格式示例:
* ArrayName:
* 0x12 0x34 0x56 0x78 0x9A 0xBC 0xDE 0xF0 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88
* 0x99 0xAA 0xBB 0xCC
*
* @warning 该函数依赖于SEGGER RTT库,使用时需要确保SEGGER RTT已正确初始化
*/
void print_array_16_per_line(const char *name, const uint8_t *array, size_t len)
{
// 打印数组名称,格式为 "名称:"
SEGGER_RTT_printf(0, "%s:\n", name);
// 遍历数组中的每个字节
for (size_t i = 0; i < len; i++)
{
// 以十六进制格式打印当前字节,格式为 "0xXX"
SEGGER_RTT_printf(0, "0x%02X", array[i]);
// 判断是否需要换行:
// 条件1: 已经打印了16个数值((i + 1) % 16 == 0)
// 条件2: 当前是最后一个数值(i == len - 1)
if ((i + 1) % 16 == 0 || i == len - 1)
{
// 满足换行条件:打印换行符
SEGGER_RTT_printf(0, "\n");
}
else
{
// 不满足换行条件:打印空格分隔符
SEGGER_RTT_printf(0, " ");
}
}
// 在所有数值打印完成后,额外添加一个空行作为结尾
SEGGER_RTT_printf(0, "\n");
}
|