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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2017, 20:21   #1
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
Восклицание ошибки на стандартные библиотеки

Вот такие вот интересные ошибки на стандартные библиотеки (кроме wsocket.h, он создан мной).
Код:
1>------ Сборка начата: проект: AreS, Конфигурация: Release Win32 ------
1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(392,5): warning MSB8028: The intermediate directory (Release\) contains files shared from another project (Source.vcxproj).  This can lead to incorrect clean and rebuild behavior.
1>  sslsocket.cpp
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(104): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(104): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(128): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(128): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(214): error C2061: синтаксическая ошибка: идентификатор "SOCKADDR_STORAGE"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(272): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(272): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(290): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(290): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(301): error C2065: SOCKADDR_STORAGE: необъявленный идентификатор
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(301): error C2065: sockAddr: необъявленный идентификатор
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(301): error C2059: синтаксическая ошибка: const
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(311): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(311): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(321): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(321): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>  wsocket.cpp
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(104): warning C4005: AF_IPX: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(452): note: см. предыдущее определение "AF_IPX"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(144): warning C4005: AF_MAX: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(471): note: см. предыдущее определение "AF_MAX"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(181): warning C4005: SO_DONTLINGER: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(394): note: см. предыдущее определение "SO_DONTLINGER"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(225): error C2011: sockaddr: переопределение типа "struct"
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(1002): note:  см. объявление "sockaddr"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(425): error C2059: синтаксическая ошибка: константа
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(425): error C3805: константа: непредвиденная лексема, требуется либо "}", либо ","
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(560): warning C4005: IN_CLASSA: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(279): note: см. предыдущее определение "IN_CLASSA"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(566): warning C4005: IN_CLASSB: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(285): note: см. предыдущее определение "IN_CLASSB"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(572): warning C4005: IN_CLASSC: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(291): note: см. предыдущее определение "IN_CLASSC"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(583): warning C4005: INADDR_ANY: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(296): note: см. предыдущее определение "INADDR_ANY"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(585): warning C4005: INADDR_BROADCAST: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(298): note: см. предыдущее определение "INADDR_BROADCAST"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(619): error C2011: sockaddr_in: переопределение типа "struct"
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(1006): note:  см. объявление "sockaddr_in"
Вот такие вот инклуды в wsocket.h
Код:
#include <windows.h>
#include <shlwapi.h>
#include <ws2tcpip.h>
#include <mstcpip.h>
Как может быть ошибка на winsock2.h если я его даже не подключал?
LD-One вне форума Ответить с цитированием
Старый 05.06.2017, 21:25   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Винсок2 никто и не тянет, смотрите внимательно. А вот винсок1 действительно виндовс.х тянет. Задефайните перед WIN32_LEAN_AND_MEAN, или _WINSOCKAPI_ для точности, или перегрупирйте инклуды.
p51x на форуме Ответить с цитированием
Старый 05.06.2017, 21:43   #3
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Винсок2 никто и не тянет, смотрите внимательно. А вот винсок1 действительно виндовс.х тянет. Задефайните перед WIN32_LEAN_AND_MEAN, или _WINSOCKAPI_ для точности, или перегрупирйте инклуды.
После дефайна WIN32_LEAN_AND_MEAN, ошибка уже стала
Код:
1>------ Сборка начата: проект: AreS, Конфигурация: Release Win32 ------
1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(392,5): warning MSB8028: The intermediate directory (Release\) contains files shared from another project (Source.vcxproj).  This can lead to incorrect clean and rebuild behavior.
1>  sslsocket.cpp
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(104): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(104): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(128): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(128): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(214): error C2061: синтаксическая ошибка: идентификатор "SOCKADDR_STORAGE"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(272): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(272): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(290): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(290): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(301): error C2065: SOCKADDR_STORAGE: необъявленный идентификатор
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(301): error C2065: sockAddr: необъявленный идентификатор
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(301): error C2059: синтаксическая ошибка: const
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(311): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(311): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(321): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>c:\users\admin\documents\visual studio 2015\projects\ares\ares\wsocket.h(321): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
Уже лучше, теперь хотя бы ошибки в моем заголовочном файле, вот правда я не понимаю, какое еще отсутствие ";"??? (SOCKET_ADDRESS_LIST *getListOfIpAddresses(int family); )
Видимо ошибка в последовательности инклудов, но как понять, как группировать их правильно?

Последний раз редактировалось LD-One; 05.06.2017 в 21:48.
LD-One вне форума Ответить с цитированием
Старый 05.06.2017, 22:38   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
SOCKET_ADDRESS_LIST
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Код:
Header
Ws2def.h (include Winsock2.h);
Winsock2.h on Windows Server 2003, Windows XP and Windows 2000
p51x на форуме Ответить с цитированием
Старый 06.06.2017, 11:47   #5
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
SOCKET_ADDRESS_LIST
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Код:
Header
Ws2def.h (include Winsock2.h);
Winsock2.h on Windows Server 2003, Windows XP and Windows 2000
Заменить SOCKADDR_STORAGE на SOCKET_ADDRESS_LIST?
LD-One вне форума Ответить с цитированием
Старый 06.06.2017, 13:05   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы о чем?

Вы спросили:
Цитата:
какое еще отсутствие ";"??? (SOCKET_ADDRESS_LIST *getListOfIpAddresses(int family); )
Я вам ответил, что SOCKET_ADDRESS_LIST у вас не определен - вот и ругается. Даже указал, что подключить надо.

Откуда вылезло SOCKADDR_STORAGE?
p51x на форуме Ответить с цитированием
Старый 06.06.2017, 13:35   #7
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Даже указал, что подключить надо.
При подключении Ws2def.h
Код:
1>------ Сборка начата: проект: AreS, Конфигурация: Release Win32 ------
1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(392,5): warning MSB8028: The intermediate directory (Release\) contains files shared from another project (Source.vcxproj).  This can lead to incorrect clean and rebuild behavior.
1>  sslsocket.cpp
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(104): warning C4005: AF_IPX: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(452): note: см. предыдущее определение "AF_IPX"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(144): warning C4005: AF_MAX: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(471): note: см. предыдущее определение "AF_MAX"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(181): warning C4005: SO_DONTLINGER: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(394): note: см. предыдущее определение "SO_DONTLINGER"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(225): error C2011: sockaddr: переопределение типа "struct"
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(1002): note:  см. объявление "sockaddr"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(425): error C2059: синтаксическая ошибка: константа
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(425): error C3805: константа: непредвиденная лексема, требуется либо "}", либо ","
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(560): warning C4005: IN_CLASSA: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(279): note: см. предыдущее определение "IN_CLASSA"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(566): warning C4005: IN_CLASSB: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(285): note: см. предыдущее определение "IN_CLASSB"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(572): warning C4005: IN_CLASSC: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(291): note: см. предыдущее определение "IN_CLASSC"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(583): warning C4005: INADDR_ANY: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(296): note: см. предыдущее определение "INADDR_ANY"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(585): warning C4005: INADDR_BROADCAST: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(298): note: см. предыдущее определение "INADDR_BROADCAST"
1>C:\Program Files\Windows Kits\8.1\Include\shared\ws2def.h(619): error C2011: sockaddr_in: переопределение типа "struct"
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(1006): note:  см. объявление "sockaddr_in"
1>C:\Program Files\Windows Kits\8.1\Include\um\winsock2.h(136): error C2011: fd_set: переопределение типа "struct"
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(1014): note:  см. объявление "fd_set"
1>C:\Program Files\Windows Kits\8.1\Include\um\winsock2.h(156): warning C4005: FD_CLR: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(89): note: см. предыдущее определение "FD_CLR"
1>C:\Program Files\Windows Kits\8.1\Include\um\winsock2.h(171): warning C4005: FD_SET: изменение макроопределения
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(94): note: см. предыдущее определение "FD_SET"
1>C:\Program Files\Windows Kits\8.1\Include\um\winsock2.h(180): error C2011: timeval: переопределение типа "struct"
1>  C:\Program Files\Windows Kits\8.1\Include\um\winsock.h(1030): note:  см. объявление "timeval"
1>C:\Program Files\Windows Kits\8.1\Include\um\winsock2.h(236): error C2011: hostent: переопределение типа "struct"
1>  wsocket.cpp
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Лезет из моего заголовочного файла(wsocket.h), жалуется на bool stringToIpW(SOCKADDR_STORAGE *sockAddr, const LPWSTR string) ;,его подключаю к wsocket.cpp, там использую такие вот инклуды:
Код:
#define WIN32_LEAN_AND_MEAN
#define _WINSOCKAPI_
#include <ws2tcpip.h>
#include <windows.h>
#include <shlwapi.h>
#include <mstcpip.h>
LD-One вне форума Ответить с цитированием
Старый 06.06.2017, 13:58   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

1.
Цитата:
При подключении Ws2def.h
Читаем еще раз внимательно. Я даже выделил специально, на что обратить внимание.

2. Не нужны сразу оба дефайна
Код:
#define WIN32_LEAN_AND_MEAN
#define _WINSOCKAPI_
один вполне справится

3. Про SOCKADDR_STORAGE все то же самое... Идем https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx и видим
Цитата:
Header
Ws2def.h (include Winsock2.h);
Winsock2.h on Windows Server 2003 and Windows XP

Последний раз редактировалось p51x; 06.06.2017 в 14:00.
p51x на форуме Ответить с цитированием
Старый 06.06.2017, 14:16   #9
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
По умолчанию

То есть, мне не подключать просто Ws2def.h? Хоть убей, не могу понять
LD-One вне форума Ответить с цитированием
Старый 06.06.2017, 14:20   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

НЕТ НЕ НАДО ЕГО ПОДКЛЮЧАТЬ НАПРЯМУЮ. Так понятнее?
Откройте этот Ws2def и читайте если не доходит:
Цитата:
Abstract:

This file contains the core definitions for the Winsock2
specification that can be used by both user-mode and
kernel mode modules.

This file is included in WINSOCK2.H. User mode applications
should include WINSOCK2.H rather than including this file
directly. This file can not be included by a module that also
includes WINSOCK.H.
Вы действительно не замечаете выделенного или что?
p51x на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стандартные библиотеки PHP IgorArhangel Помощь студентам 4 09.02.2011 21:12
CLR и стандартные библиотеки win32 kolob2000 Общие вопросы .NET 1 08.01.2011 15:29
Стандартные библиотеки Hemul Общие вопросы C/C++ 8 06.12.2010 21:26