Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2013, 08:56   #1
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
Вопрос Отсутствие декларации в области видимости(MinGW)

Здравствуйте. Имеется код:
Код:
#include <winsock2.h>
#include <ws2tcpip.h>

int main()
{
        //...
        /* DEFAULT_PORT, hints, *result определены ранее */
        getaddrinfo(NULL, DEFAULT_PORT, &hints, &result);
        //...
        freeaddrinfo();
        //...
}
при трансляции исходного файла командой: g++ -c main.cpp
выдается сообщение об ошибке: "нет декларации <getaddrinfo> в этой области видимости", для freeaddrinfo выдается тоже самое.
Объявил явно перед main():
Код:
extern "C" {
   int WSAAPI getaddrinfo (const char*,const char*,const struct                     addrinfo*,struct addrinfo**);
 void WSAAPI freeaddrinfo (struct addrinfo*);
}
, ошибки пропали. Но почему возникли те ошибки, когда в <ws2tcpip.h> имеются все необходимые объявления?
halcyon вне форума Ответить с цитированием
Старый 30.07.2013, 11:05   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Вот я посмотрел как декларированы эти функции в <ws2tcpip.h> для MinGW
Код:
#if (_WIN32_WINNT >= 0x0501)
void WSAAPI freeaddrinfo (struct addrinfo*);
int WSAAPI getaddrinfo (const char*,const char*,const struct addrinfo*,
		        struct addrinfo**);
int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
		       char*,DWORD,int);
#else
/* FIXME: Need WS protocol-independent API helpers.  */
#endif
Видимо у Вас в коде нет макроопределения: _WIN32_WINNT 0x0501

WS2_32.Lib разумеется подключена?
EUGY вне форума Ответить с цитированием
Старый 31.07.2013, 03:02   #3
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
Видимо у Вас в коде нет макроопределения: _WIN32_WINNT 0x0501
Действительно, как-то упустил этот момент. Спасибо.

Цитата:
Сообщение от EUGY Посмотреть сообщение
WS2_32.Lib разумеется подключена?
Да, подключаю на этапе компоновки
halcyon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расширение области видимости локального объекта на все файлы. mmx358 Общие вопросы C/C++ 9 13.07.2012 11:18
Вопрос по области видимости LMnet Общие вопросы C/C++ 2 04.04.2011 08:02
Как удалить лишние процедуры и декларации? mosq Общие вопросы Delphi 9 04.10.2009 01:34
нет декларации ‘NULL’ Роман Радер Общие вопросы C/C++ 4 22.07.2009 16:40
Как сделать чтобы новые строки всегда были в области видимости? neugadal Microsoft Office Excel 9 06.09.2008 12:23