根据我的 stdio.h
,printf
的原型是
extern int printf (const char *__restrict __format, ...);
在解释 Restrict的页面上,它说这是一个用于指示指针是唯一的关键字。然而,我不明白为什么
printf
需要它。为什么
printf
有一个“restrict”关键字?如果需要进一步解释“restrict”的含义,请说明。
根据我的 stdio.h
,printf
的原型是
extern int printf (const char *__restrict __format, ...);
printf
需要它。printf
有一个“restrict”关键字?snprintf()
和 sprintf()
,显然应该清楚为什么格式不应与目标缓冲区重叠,但对于输出到文件的变体而言,情况有些模糊。%hhn
指示符会将其参数(即一个 signed char *
)设置为迄今为止写入的字符数。如果您传递指向格式字符串元素的指针,则会修改字符串,从而可能引入未定义的行为 - 如果该数字对应于字符 '%'
的值呢?