Недавно я узнал, что функция strdup()
, которой я наслаждался, используя так много в OS X, не является частью ANSI C, а является частью POSIX. Я не хочу переписывать весь свой код, поэтому я думаю, что просто напишу свою собственную функцию strdup()
. Это не так сложно, действительно, это просто malloc()
и a strcpy()
. Во всяком случае, у меня есть функция, но что я делаю, если я пишу эту функцию и свяжу ее с моим кодом, и она уже существует в libc? Будет ли мой компоновщик или компилятор разрешить мне в основном определять мою собственную версию функции или мне нужно дать ей другое имя? Было бы очень удобно, если бы существовал способ повторного использования одного и того же имени, так что если strcpy()
существует в пользовательском libc, он может использовать это, но если он не существует в их libc, они могут использовать мою версию вместо этого, как можно меньше изменений кода.
Краткая версия:
a) Что происходит, когда я пишу свою собственную функцию с тем же именем, что и встроенная функция?
b) Что я могу сделать, чтобы избежать плохих вещей, происходящих со мной на платформах, которые не имеют strdup()
, не переписывая весь мой код, чтобы не использовать strdup()
, что немного утомительно?