- 论坛徽章:
- 0
|
我的头文件里声明了
extern void set_sockaddr_family_addr_port(struct sockaddr_storage *sockaddr,
int family,
void *addr,
int port);
源文件里实现了
void set_sockaddr_family_addr_port(struct sockaddr_storage *sockaddr,
int family,
void *addr,
int port){
memset(sockaddr,0,sizeof(struct sockaddr_storage));
switch (family) {
#if defined(AF_RDS)
case AF_RDS:
#endif
case AF_INET: {
struct sockaddr_in *foo = (struct sockaddr_in *)sockaddr;
foo->sin_port = htons((unsigned short) port);
foo->sin_family = (unsigned short) family;
memcpy(&(foo->sin_addr),addr,sizeof(foo->sin_addr));
*(int *)addr = htonl(*(int *)addr);
break;
}
#if defined(AF_INET6)
case AF_INET6: {
struct sockaddr_in6 *foo = (struct sockaddr_in6 *)sockaddr;
int *bar;
int i;
foo->sin6_port = htons((unsigned short) port);
foo->sin6_family = (unsigned short) family;
memcpy(&(foo->sin6_addr),addr,sizeof(foo->sin6_addr));
/* how to put this into "host" order? */
for (i = sizeof(foo->sin6_addr)/sizeof(int), bar=addr; i > 0; i--) {
bar[i] = htonl(bar[i]);
}
break;
}
#endif
default:
fprintf(where,
"set_sockaddr_family_addr_port Unexpected Address Family of %u\n",family);
fflush(where);
exit(-1);
}
}
编译不过啊,出现error: conflicting types for 'set_sockaddr_family_addr_port'
help~~ |
|