powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как расширение файла влияет на компиляцию?
5 сообщений из 5, страница 1 из 1
Как расширение файла влияет на компиляцию?
    #33183229
bond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите начинающему в С++ разобраться. Есть SDK от одного производителя, выпущенное довольно давно, может где-то в 1998 году. В документации к нему написано, что думано использовать с Microsoft Visual C++ 2.0 и выше. На основе этого надо создать приложение с возможностью работать через сокеты. Наткнулся на такие грабли:
1. Все файлы SDK имеют расширение .c и нормально компилируются, т.е. без ошибок. Добавляю в главный файл подключение библиотеки #include <Winsock2.h> и в программе определяю переменную sockaddr_in sa;. При компиляцию выдается ошибка типа:
pdk.c(251) : error C2065: 'sockaddr_in' : undeclared identifier
pdk.c(251) : error C2146: syntax error : missing ';' before identifier 'sa'
pdk.c(251) : error C2065: 'sa' : undeclared identifier
Сравнил с работающим проектом, пришел к выводу, что не нравиться расширение файла. Поменял его с .c на .cpp Теперь на переменную sa не ругается но вылезло куча других ошибок, например:
crserver.h(377) : error C2059: syntax error : 'private'
crserver.h(377) : error C2238: unexpected token(s) preceding ';'
pdk.cpp(232) : error C2440: 'initializing' : cannot convert from 'void *' to 'char *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast

В первом случае нашел, что есть такое определение
typedef struct
{
CR_REQ_HDR reqHdr; /* request header */
char private[1]; /* private workspace data area */
} CR_PROTO_REQ;

Во втором случае нашел, что не нравиться такая строка
char *msg= NULL_P_VOID;
NULL_P_VOID определено в другом файле как
#define NULL_P_VOID ((void *) 0L)

В первом случае я так понимаю что слово private зарезервировано. Что делать?
Во втором случае не знаю в чем причина.
Как расширение файла может так влиять на компиляцию?
Какие могут быть рекомендации?

2. Как решается проблема переопределения?
D:\Microsoft Platform SDK\include\Winsock2.h(1037) : error C2371: 'GROUP' : redefinition; different basic types
D:\PDK\SOURCE\pdlapi.h(417) : see declaration of 'GROUP'
Я так понимаю, что надо использовать пространство имен namespace для разрешения конфликта, т.е. в моем случае например весь файл pdlapi.h засунуть в одно пространство имен и обращаться используя оператор разрешения контекста ::. Или есть другое решение?

В работе использую Windows XP SP2, Microsoft Visual C++ 6.0 SP6 + Microsoft Platform SDK for Windows Server 2003 Sp1.

Спасибо
...
Рейтинг: 0 / 0
Как расширение файла влияет на компиляцию?
    #33183542
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смена разрешения только меняет режим работы компилятора, с C на C++ или наоборот, да и то его можно задать явно с помощью соотв. ключа.
Ты там разберить, если программа на С, ее на С и надо компилировать. Не надо ее на С++ пытаться скомпилировать.
...
Рейтинг: 0 / 0
Как расширение файла влияет на компиляцию?
    #33183683
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bondПомогите начинающему в С++ разобраться. Есть SDK от одного производителя, выпущенное довольно давно, может где-то в 1998 году. В документации к нему написано, что думано использовать с Microsoft Visual C++ 2.0 и выше. На основе этого надо создать приложение с возможностью работать через сокеты.
Дальше можно не читать :)
К сожалению, совместимость библиотек снизу-вверх очень ограничена. Для устойчивой работы конкретно с этой библиотекой прийдется брать именно Microsoft Visual C++ 2.0. Для более поздних компиляторов прийдется вручную перелопачивать все заголовочные (и исходные если есть) файлы библиотеки и приводить их в современный вид. И то не гарантируется что заработает. Увы.
Чаще всего "привод в современный вид" будет заключаться в поиске узких мест (как например уже показаные) и превращением их в код типа:
Код: plaintext
1.
2.
3.
4.
5.
#if (defined _MSC_VER) // мы работает с каким-то MS Visual C++ компилятором
#if (_MSC_VER =  2000 ) // это точно MS Visual C++ v 2.0
#define NULL_P_VOID ((void *) 0L)
#elif (_MSC_VER =  6000 ) // это точно MS Visual C++ v 6.0
#define NULL_P_VOID ((void *)  0 )
#endif
Код примерный, конечно.

Вообще, лучше всего взять более новую версию этой библиотеки (если нужна именно она), либо взять альтернативную современную библиотеку. Вариант с откатом на более раннюю версию компилятора рассматривать не будем? :)

А по вопросу "Как расширение файла влияет на компиляцию?" ответ очень простой - запускамый модуль компилятора на основе расширения догадывается на каком языке написан этот конкретный исходник и запускает соответствующий парсер. Все. Этим можно управлять при помощи ключей (тогда компилятор не будет смотреть на расширение вообще). Но так извращаться очень не рекомендуется. Исходник на С должен компилироваться как С код, иначе в дальнейшем могут вылезти проблемы с узнаванием экспортированных имен. Это как минимум :)
...
Рейтинг: 0 / 0
Как расширение файла влияет на компиляцию?
    #33184009
bond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to MasterZiv
В том то и дело что в документации написано что думано для Visual C++

to White Owl
к сожаление новую библиотеку не достать, разработчик этот проект пустил на самотек, по крайней мере складывается такое впечатление.
Попробую подогнать библиотеки, может моих знаний хватит ;)

А как на счет второго вопроса?
...
Рейтинг: 0 / 0
Как расширение файла влияет на компиляцию?
    #33184292
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl, что -то я не думаю что 6 от 2.0 в части С так уж различается.
Да даже и в части С++ - только шаблоны. 7-ка - та да, сильно.
Или я забыл уже все ???
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как расширение файла влияет на компиляцию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]