0

我有一个包含以下内容的 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 文件中,它工作正常怎么来

4

2 回答 2

1

不知道如何解决你的问题,但按照惯例,你永远不应该包含在头文件中,因为你可能有一天会编写代码,需要你的头文件,但不是所有的包含。

于 2012-06-17T16:08:42.660 回答
0

尝试包含 Ws2tcpip.h 并查看是否可以解决问题。这就是 MSDN 不得不说的(参见需求部分)

http://msdn.microsoft.com/en-us/library/windows/desktop/ms738520%28v=vs.85%29.aspx

另外,让我说这似乎包含了很多头文件,除非你真的知道你在做什么,否则有些不应该匹配。有相当多的 C++ 头文件(iostream(顺便包括两次)、cstdio、cstdlib、算法、列表、字符串、ctime...)与 C 头文件(stdio.h、stdlib.h string.h )。也许是时候在那里进行一些春季大扫除:)

于 2012-06-17T13:51:50.833 回答