C99:非标准函数的自定义实现

C99: Custom implementations of non-standard functions

在我的项目中,我想使用一个非标准的库函数,它在某些系统上可能没有定义。就我而言,它是 strlcpy.

来自man strcpy

Some systems (the BSDs, Solaris, and others) provide the following function:

    size_t strlcpy(char *dest, const char *src, size_t size);

...

我的系统没有实现 strlcpy,所以我自己推出了。一切都很好,直到在已经定义了 strlcpy 的系统上编译:error: conflicting types for strlcpy.

我的问题:如何实现可能会导致命名冲突的功能?我可以使用像 #ifdef some_macro(strlcpy) 这样的指令,还是我只是将 strlcpy 重命名为 my_strlcpy

检查是否需要包含。

示例 - 我认为系统列表会更长

#if !defined(__FreeBSD__)
#include "mystring.h"
#endif