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
在我的项目中,我想使用一个非标准的库函数,它在某些系统上可能没有定义。就我而言,它是 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