C 语言编译错误: call to undeclared function 'reallocarray' 解决方法
如果您已包含 stdlib.h 但仍然收到'error: call to undeclared function 'reallocarray'' 错误,则可能是您的编译器版本太旧而不支持 reallocarray 函数。reallocarray 函数是在 C11 标准中引入的,因此您需要使用支持 C11 标准的编译器。
您可以尝试使用新的编译器或手动实现 reallocarray 函数。下面是一个手动实现 reallocarray 函数的示例代码:
#include <stdlib.h>
#include <stddef.h>
void *reallocarray(void *ptr, size_t nmemb, size_t size) {
if ((nmemb == 0 || size == 0) && ptr != NULL) {
free(ptr);
return NULL;
}
if (nmemb > SIZE_MAX / size) {
errno = ENOMEM;
return NULL;
}
return realloc(ptr, nmemb * size);
}
请注意,此代码仅适用于 Linux 和 MacOS 操作系统。如果您使用的是 Windows 操作系统,则可能需要进行更改。
原文地址: https://www.cveoy.top/t/topic/m142 著作权归作者所有。请勿转载和采集!