У меня возникли проблемы с тем, что API C сокетов корректно работает на С++. В частности, хотя я включаю sys/socket.h
, я все равно получаю ошибки времени компиляции, сообщая мне, что AF_INET
не определен. Я пропустил что-то очевидное, или это может быть связано с тем, что я делаю это кодирование на z/OS
, и мои проблемы намного сложнее?
Обновление. При дальнейшем исследовании я обнаружил, что есть #ifdef
, который я нажимаю. По-видимому, z/OS
не радует, если я не определяю, какой "тип" сокетов я использую с:
#define _OE_SOCKETS
Теперь я лично понятия не имею, для чего этот _OE_SOCKETS
на самом деле, так что если какие-либо программисты сокета z/OS
там (все трое из вас), возможно, вы могли бы дать мне краткое изложение того, как все это работает?
Конечно, я могу опубликовать тестовое приложение.
#include <sys/socket.h>
int main()
{
return AF_INET;
}
Вывод компиляции/ссылки:
cxx -Wc, xplink -Wl, xplink -o inet_test inet.C
"./inet.C", строка 5.16: CCN5274 (S) Поиск имени для "AF_INET" не нашел объявления.
CCN0797 (I) Ошибка компиляции файла. /inet.C. Файл объекта не создан.
Проверка sys/sockets.h включает определение, которое мне нужно, и, насколько я могу судить, оно не блокируется никакими операторами #ifdef.
Однако я заметил, что он содержит следующее:
#ifdef __cplusplus
extern "C" {
#endif
который инкапсулирует в основном весь файл. Не уверен, имеет ли это значение.