首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对memcpy_s的未定义引用

对memcpy_s的未定义引用
EN

Stack Overflow用户
提问于 2015-07-07 19:59:04
回答 2查看 20.4K关注 0票数 8

我试图修复对memcpy_s()错误的未定义引用。我在我的文件中包含了string.hmemcpy()函数运行良好,我也尝试过包含memory.h。我在x64 Windows 7上,用gcc 4.8.1编译。

代码语言:javascript
运行
复制
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void doMemCopy(char* buf, size_t buf_size, char* in, int chr) {
    memcpy_s(buf, buf_size, in, chr);
}

buf的内存已在主函数中分配,该函数调用doMemCpy(buf, 64, in, bytes)in是从标准输入读取的字符串。

来自cmd终端的准确错误:

未定义的对"memcpy_s“regt2.exe的引用:错误: ld返回了1个退出状态

EN

回答 2

Stack Overflow用户

发布于 2016-10-20 19:14:34

据我所知,GCC 4.8不包括函数memcpy_s或任何其他_s边界检查函数。这些职能是在ISO 9899:2011附件K中界定的,是可供选择执行的。在使用它们之前,您必须检查是否定义了__STDC_LIB_EXT1__

这些功能最初是由Microsoft实现的,许多方面反对将它们包括在标准中。我认为主要的反对意见是,这些函数所做的错误处理涉及一个全局回调句柄,该句柄在线程之间共享,但它们也非常低效。

进一步的阅读可从卡洛斯奥多内尔和马丁塞布尔在更新附件K-边界检查接口的现场经验

票数 11
EN

Stack Overflow用户

发布于 2015-07-07 20:03:34

我从来没有用过这个,但是AFAIK,你需要添加

代码语言:javascript
运行
复制
#define __STDC_WANT_LIB_EXT1__ 1

在此之前

代码语言:javascript
运行
复制
#include <string.h>

使用memcpy_s()

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31278172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档