我最近意识到strdup()
我在 OS X 上非常喜欢使用的功能不是 ANSI C 的一部分,而是 POSIX 的一部分。我不想重写我所有的代码,所以我想我只是要编写自己的strdup()
函数。这并不难,真的,它只是一个malloc()
和一个strcpy()
。无论如何,我有这个函数,但是如果我编写这个函数并将它链接到我的代码,并且它已经存在于 libc 中,我该怎么办?我的链接器或编译器是否允许我基本上定义我自己的函数版本,还是我必须给它另一个名字?如果有一种方法可以重用相同的名称,那将非常方便,这样如果strcpy()
存在于用户的 libc 中,他们就可以使用它,但如果它不存在于他们的 libc 中,他们可以使用我的版本,只需要很少的代码尽可能地改变。
简短版本:
a) 当我编写自己的函数与内置函数同名时会发生什么?
strdup()
b) 我能做些什么来避免在没有将我所有的代码重写为 not use的平台上发生不好的事情strdup()
,这有点乏味?