我最近才意识到我在OS X上使用如此多的函数的strdup()
函数不是ANSI C的一部分,而是POSIX的一部分。我不想重写我所有的代码,所以我想我只是写我自己的strdup()
函数。这并不难,真的,这只是一个malloc()
和strcpy()
。无论如何,我有这个函数,但是如果我编写这个函数并将其链接到我的代码,并且它已经存在于libc中,我该怎么办?我的链接器或编译器是否允许我基本定义自己的函数版本,还是必须给它另一个名称?如果有一种重用相同名称的方法,这非常方便,因此如果strcpy()
存在于用户的libc中,他们可以使用它,但是如果它不存在于libc中,他们可以使用我的版本,代码更改尽可能。strdup()函数
短的版本:
一)当我写我自己的函数具有相同的名称作为一个内置的功能,会发生什么?
B)我能做些什么,以避免不好的事情发生在我的平台上没有strdup()
无需重写我的代码,不使用strdup()
,这仅仅是一个有点乏味?
如果您觉得雄心勃勃,您甚至可以设置automake和autoconf来配置测试是否需要自己定义strdup所需的宏,而不是列举您希望支持的所有编译器和环境。 – 2009-01-27 06:28:24