У меня есть CPP файл содержит это включают:Почему это имеет значение, если #include находятся в файле .h или в .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 он работает отлично, как приходит
Помещение с использованием пространства имен std; в файле заголовка не должно быть сделано. Он побеждает, используя пространство имен. – Superman
Если вы помещаете '# include' в файл cpp, 'use namespace std ;' вещь появляется перед' # include '. Я не знаю, вызвало ли это это, но это может иметь значение. –
Любой cpp, включая этот заголовок, будет иметь большую работу, которую нужно выполнить при компиляции после изменения. Лучше поместить то, что вам нужно в каждом отдельном файле. – chris