Hace poco me di cuenta de que la función strdup()
que he disfrutado utilizando tanto en OS X no es parte de ANSI C, sino parte de POSIX. No quiero volver a escribir todo mi código, así que creo que voy a escribir mi propia función strdup()
. No es tan difícil, realmente, es solo un malloc()
y un strcpy()
. De todos modos, tengo la función, pero ¿qué hago si escribo esta función y la vinculo a mi código, y ya existe en la libc? ¿Mi enlazador o compilador me permitirá básicamente definir mi propia versión de la función, o tengo que darle otro nombre? Sería terriblemente conveniente si hubiera una manera de reutilizar el mismo nombre, de modo que si strcpy()
existe en la libc del usuario podrían usar eso, pero si no existiera en su libc, podrían usar mi versión en su lugar, con tan poco cambio de código como sea posible.strdup() función
La versión corta:
a) ¿Qué ocurre cuando escribo mi propia función con el mismo nombre que una función incorporada?
b) ¿Qué puedo hacer para evitar que me pasen cosas malas en plataformas que no tienen strdup()
sin volver a escribir todo mi código para no usar strdup()
, lo cual es un poco tedioso?
Si se siente ambicioso, incluso podría configurar automake y autoconf para configurar la macro necesaria para probar si necesita definir strdup usted mismo, en lugar de enumerar todos los compiladores y entornos que desea admitir. –