【发布时间】:2021-11-18 12:44:04
【问题描述】:
我正在尝试调用 memcpy_s()。下面是我观察警告的代码 sn-p “错误:函数‘memcpy_s’的隐式声明;你的意思是‘memcpy’吗?[-Werror=implicit-function-declaration]”
#include <stdio.h>
#include <string.h>
#include <stdint.h>
static const uint32_t ab[10] = {0,1,2,3,4,5,6,7,8,9};
void main()
{
uint32_t u[10];
memcpy_s((void *)&u[0], sizeof(u), (void *)&ab[0], 10 * sizeof(uint32_t));
}
【问题讨论】:
-
sizeof ab在哪里?它的类型是什么? -
显然
memcpy_s在您的平台上不可用。但是无论如何,该函数都毫无用处,尤其是在您忽略返回值的情况下。见这里:en.cppreference.com/w/c/string/byte/memcpy。无论如何:只需使用memcpy并忘记memcpy_s。 -
修复
void*)语法错误后,它确实可以用MS VC编译。 -
@Jabberwocky 是的,我知道这一点,但是马虎的 默认为 int 加上偏执的附件-K 固定让我感到困惑。 [更不用说
void main()和不必要的(void*)演员] -
@Coder 不,您在
#include <string.h>之前缺少#define __STDC_WANT_LIB_EXT1__。但即使这样也无济于事……奇怪。还是试试吧
标签: c