本文介绍了实施新的strcpy函数重新定义了库函数strcpy?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 有人说,我们可以写多个声明,但只有一个定义。现在,如果我实现我自己的strcpy函数有相同的原型: 的char *的strcpy(字符*目的地,为const char *源); 然后我不能重新定义现有的库函数?不应该这样显示错误?抑或是它在某种程度上与在对象code形式提供的库函数的事实?编辑:运行在我的机器上的以下code说:分割故障(核心转储)。我工作的Linux和不使用任何标志编译。 的#include<&stdio.h中GT;#包括LT&;&stdlib.h中GT;#包括LT&;&string.h中GT;字符*的strcpy(字符*目的地,为const char *源);诠释主(){ 字符* S =的strcpy(一,B); 的printf(\\ n此功能已成功运行的\\ n); 返回0;}字符*的strcpy(字符*目的地,为const char *源){ 的printf(一式两份函数strcpy); 返回A;} 请注意,我不是要实现的功能。我只是想重新定义一个函数,并要求对后果。 编辑2:应用由垫所建议的修改后,该程序不再给出了一个分段错误,虽然我还是重新定义的功能。 的#include<&stdio.h中GT;#包括LT&;&stdlib.h中GT;#包括LT&;&string.h中GT;字符*的strcpy(字符*目的地,为const char *源);诠释主(){ 字符* S =的strcpy(一,B); 的printf(\\ n此功能已成功运行的\\ n); 返回0;}字符*的strcpy(字符*目的地,为const char *源){ 的printf(一式两份函数strcpy); 返回A;} 解决方案 C11(ISO / IEC 9899:201X)§7.1.3的保留标识符的If the program declares or defines an identifier in a context in which it is reserved, or defines a reserved identifier as a macro name, the behavior is undefined. Note that this doesn't mean you can't do that, as this post shows, it can be done within gcc and glibc.glibc §1.3.3 Reserved Names proveds a clearer reason: 这篇关于实施新的strcpy函数重新定义了库函数strcpy?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 09-05 09:34