这个问题和许多更多的是问,如果一个呼叫本网站上的许多问题中的memcpy()
是与零值指定的长度\大小有效。回答时,每个人都引用当前的C标准(在本例中为C17 ISO / IEC9899:2017第283页),
如果声明为as的参数
size_t
n
指定函数数组的长度,则对该函数n
的调用的值可以为零。除非在本节中对特定功能的描述中另有明确说明,否则此类调用上的指针参数仍应具有有效值,如7.1.4中所述。在这样的调用中,找不到字符的函数没有出现,比较两个字符序列的函数返回零,而复制字符的函数则复制零字符。
但是,这来自C标准,而C ++标准未引用。
在当前的C ++标准(即C ++ 17 ISO / IEC 14882)的何处列出了相同的定义?C和C ++具有两种不同的标准(和语言),据我所知,您不能引用一个标准并期望在另一个标准中存在相同的规则/行为。
如果C标准中的这种引用在C ++中有效而未在标准中明确说明,那么有人可以提供一个源来备份C和C ++之间的这种连接吗?
C ++ 17标准说明了有关C标准库的内容:
1 C ++标准库还提供C标准库的功能,并对其进行了适当调整以确保静态类型安全。
2许多库函数的描述都依赖于C标准库来获取这些函数的语义。在某些情况下,本国际标准中指定的签名可能与C标准库中的签名不同,并且本国际标准中可能会声明其他重载,但其行为和前提条件(包括使用
restrict
除非另有说明,否则ISO C 限定词)相同。
关于你的问题
如果来自C标准的引号在C ++中有效而未在标准中明确说明
答案是“是”。