#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void *combine(void *o1, size_t s1, void *o2, size_t s2)
{
void *result = malloc(s1 + s2);
if (result != NULL)
mempcpy(mempcpy(result, o1, s1), o2, s2);
return result;
}
int main(void)
{
return 0;
}
gcc -o test test.c
test.c: In function ‘combine’:
test.c:10:3: warning: implicit declaration of function ‘mempcpy’ [-Wimplicit-function-declaration]
mempcpy(mempcpy(result, o1, s1), o2, s2);
^~~~~~~
test.c:10:3: warning: incompatible implicit declaration of built-in function ‘mempcpy’
解决方法:
增加
#define _GNU_SOURCE
完整代码如下:
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void *combine(void *o1, size_t s1, void *o2, size_t s2)
{
void *result = malloc(s1 + s2);
if (result != NULL)
mempcpy(mempcpy(result, o1, s1), o2, s2);
return result;
}
int main(void)
{
return 0;
}