私はこれを使用しています:
#if !defined(_SVID_SOURCE) || !defined(_BSD_SOURCE) || _XOPEN_SOURCE < 500 || !(_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) \
|| _POSIX_C_SOURCE < 200809L
char * strdup(const char *s)
{
char *buffer = malloc(strlen(s) + 1);
if(buffer != NULL)
strcpy(buffer, s);
return buffer;
}
#endif
しかし、再宣言エラーが発生する可能性はありますか?たぶん、いくつかのgccバージョンまたはgccのようなコンパイラに?たとえば、strdup()
がないバージョン(標準)と互換性を持たせたい。-ansi
また、どうすればもっとポータブルにすることができますか?