我有一个cpp文件,其中包含以下内容:
#include "twitServer.h"
在twitServer.h中我有:
#ifndef twitServer_twitServer_h
#define twitServer_twitServer_h
#include <string>
#include <map>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <list>
#include <sys/socket.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <cstring>
#include <netdb.h>
#include <errno.h>
#include <sstream>
#include <algorithm>
#include <ctime>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include "twitUser.h"
using namespace std;
void startServer(string port);
#endif
但是Xcode说这行:
if ((rv = getaddrinfo(NULL, port, &hints, &ai)) != 0) {
fprintf(stderr, "selectserver: %s\n", gai_strerror(rv));
exit(1);
}
getaddrinfo
未定义......为什么?
如果包含在cpp文件中,它可以正常工作
答案 0 :(得分:1)
不确定如何解决您的问题,但按照惯例,您不应该包含在头文件中,因为您可能会在某天编写代码,需要您的头文件,但不是所有的包含。
答案 1 :(得分:0)
尝试包含Ws2tcpip.h,看看是否能解决问题。这就是MSDN对它的评价(参见要求部分)
http://msdn.microsoft.com/en-us/library/windows/desktop/ms738520%28v=vs.85%29.aspx
另外,让我说这似乎包含了大量的头文件,除非你真的知道自己在做什么,否则不应该匹配一些。有很多C ++头文件(iostream(包括两次),cstdio,cstdlib,algorithm,list,string,ctime ...)与C头文件混合(stdio.h,stdlib.h string.h )。也许是时候在那里进行一些晚春清洁了:)