Winsock vs Winsock2
От: slavo  
Дата: 21.12.07 12:49
Оценка:
День добрый,

Есть у меня либа, скомпилированная vc6 с подключением файла winsock.h. Будут ли проблемы, если я буду использовать ее с подключением файла winsock2.h.

Т.е. есть либа a.lib и ее заголовочный файл a.h. Файл a.h включает в себя winsock.h. Соответственно при компиляции a.lib использовался winsock.h. Теперь я использую эту либу, но в a.h пишу #include <winsock2.h>. Будут ли проблемы?! А если все наоборот?
Только не спрашивайте, зачем я это делаю . Так получилось.

24.12.07 12:58: Перенесено модератором из 'C/C++' — Кодт
Re: Winsock vs Winsock2
От: McQwerty Россия  
Дата: 21.12.07 15:02
Оценка:
Здравствуйте, slavo, Вы писали:

S>Есть у меня либа, скомпилированная vc6 с подключением файла winsock.h. Будут ли проблемы, если я буду использовать ее с подключением файла winsock2.h.


S>Т.е. есть либа a.lib и ее заголовочный файл a.h. Файл a.h включает в себя winsock.h. Соответственно при компиляции a.lib использовался winsock.h. Теперь я использую эту либу, но в a.h пишу #include <winsock2.h>. Будут ли проблемы?! А если все наоборот?

S>Только не спрашивайте, зачем я это делаю . Так получилось.

Если использовать include guards, то проблем быть не должно.
winsock2.h определяет и _WINSOCK2API_ и _WINSOCKAPI_
То есть, если писать так:
#ifndef _WINSOCK2API_
    #include <winsock2.h>
#endif

#ifndef _WINSOCKAPI_
    #include <winsock.h>
#endif

то будет хорошо.

Хотя, вот так:
#ifndef _WINSOCKAPI_
    #include <winsock.h>
#endif

#ifndef _WINSOCK2API_
    #include <winsock2.h>
#endif

всё равно плохо....
Re[2]: Winsock vs Winsock2
От: slavo  
Дата: 21.12.07 16:23
Оценка:
Здравствуйте, McQwerty, Вы писали:

MQ>Здравствуйте, slavo, Вы писали:



MQ>Если использовать include guards, то проблем быть не должно.


Include guards уже есть в этих файлах. Вопрос не в этом. Вопрос в том, можно ли скомпилять либу с одним из них, но использовать с другим. Конечно, лучше этого не делать. Но если это произошло, то чем чревато? Может кто сталкивался?
Re[3]: Winsock vs Winsock2
От: Maxim S. Shatskih Россия  
Дата: 22.12.07 14:15
Оценка:
S>Include guards уже есть в этих файлах. Вопрос не в этом. Вопрос в том, можно ли скомпилять либу с одним из них, но использовать с другим. Конечно, лучше этого не делать. Но если это произошло, то чем чревато? Может кто сталкивался?

Либы вообще зло. они не зло только тогда, когда они промежуточный продукт компиляции, и строятся вместе со всем остальным.

Строить либу в одном месте, а остальное — в другом — это зло.
Занимайтесь LoveCraftом, а не WarCraftом!
Re[3]: Winsock vs Winsock2
От: Evgeniy13 Россия  
Дата: 24.12.07 14:09
Оценка:
Здравствуйте, slavo, Вы писали:

S>Здравствуйте, McQwerty, Вы писали:


MQ>>Здравствуйте, slavo, Вы писали:



MQ>>Если использовать include guards, то проблем быть не должно.


S>Include guards уже есть в этих файлах. Вопрос не в этом. Вопрос в том, можно ли скомпилять либу с одним из них, но использовать с другим. Конечно, лучше этого не делать. Но если это произошло, то чем чревато? Может кто сталкивался?


Дык, какая разница, какие заголовки? Главное, что компилируется, т.е. определены все нужные функции.
Не все в этом мире можно выразить с помощью нулей и единиц...
Re[4]: Winsock vs Winsock2
От: slavo  
Дата: 24.12.07 17:01
Оценка:
Здравствуйте, Evgeniy13, Вы писали:

E>Здравствуйте, slavo, Вы писали:


S>>Здравствуйте, McQwerty, Вы писали:


MQ>>>Здравствуйте, slavo, Вы писали:



MQ>>>Если использовать include guards, то проблем быть не должно.


S>>Include guards уже есть в этих файлах. Вопрос не в этом. Вопрос в том, можно ли скомпилять либу с одним из них, но использовать с другим. Конечно, лучше этого не делать. Но если это произошло, то чем чревато? Может кто сталкивался?


E>Дык, какая разница, какие заголовки? Главное, что компилируется, т.е. определены все нужные функции.


Разница такая, что если либа скомпилена с winsock.h, а используется в коде, который юзает winsock2.h, то возможны косяки из-за того, что некоторые типы в них отличаются во внутренней структуре.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.