Есть у меня либа, скомпилированная 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++' — Кодт
Здравствуйте, 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_
То есть, если писать так:
Здравствуйте, McQwerty, Вы писали:
MQ>Здравствуйте, slavo, Вы писали:
MQ>Если использовать include guards, то проблем быть не должно.
Include guards уже есть в этих файлах. Вопрос не в этом. Вопрос в том, можно ли скомпилять либу с одним из них, но использовать с другим. Конечно, лучше этого не делать. Но если это произошло, то чем чревато? Может кто сталкивался?
S>Include guards уже есть в этих файлах. Вопрос не в этом. Вопрос в том, можно ли скомпилять либу с одним из них, но использовать с другим. Конечно, лучше этого не делать. Но если это произошло, то чем чревато? Может кто сталкивался?
Либы вообще зло. они не зло только тогда, когда они промежуточный продукт компиляции, и строятся вместе со всем остальным.
Строить либу в одном месте, а остальное — в другом — это зло.
Здравствуйте, slavo, Вы писали:
S>Здравствуйте, McQwerty, Вы писали:
MQ>>Здравствуйте, slavo, Вы писали:
MQ>>Если использовать include guards, то проблем быть не должно.
S>Include guards уже есть в этих файлах. Вопрос не в этом. Вопрос в том, можно ли скомпилять либу с одним из них, но использовать с другим. Конечно, лучше этого не делать. Но если это произошло, то чем чревато? Может кто сталкивался?
Дык, какая разница, какие заголовки? Главное, что компилируется, т.е. определены все нужные функции.
Не все в этом мире можно выразить с помощью нулей и единиц...
Здравствуйте, Evgeniy13, Вы писали:
E>Здравствуйте, slavo, Вы писали:
S>>Здравствуйте, McQwerty, Вы писали:
MQ>>>Здравствуйте, slavo, Вы писали:
MQ>>>Если использовать include guards, то проблем быть не должно.
S>>Include guards уже есть в этих файлах. Вопрос не в этом. Вопрос в том, можно ли скомпилять либу с одним из них, но использовать с другим. Конечно, лучше этого не делать. Но если это произошло, то чем чревато? Может кто сталкивался?
E>Дык, какая разница, какие заголовки? Главное, что компилируется, т.е. определены все нужные функции.
Разница такая, что если либа скомпилена с winsock.h, а используется в коде, который юзает winsock2.h, то возможны косяки из-за того, что некоторые типы в них отличаются во внутренней структуре.