我在让C套接字API在C++上正常工作时遇到问题z/OS.
虽然我包括在内sys/socket.h,但我仍然遇到编译时错误,告诉我AF_INET没有定义.
我是否遗漏了一些显而易见的事情,或者这与这样一个事实相关:继续z/OS使我的问题变得更加复杂?
更新:经过进一步调查,我发现有一个#ifdef我正在打击.z/OS除非我定义我使用的哪种"类型"套接字,否则显然不高兴:
#define _OE_SOCKETS
Run Code Online (Sandbox Code Playgroud)
现在,我个人不知道这_OE_SOCKETS实际上是什么,所以如果任何z/OS套接字程序员在那里(你们三个人),或许你可以给我一个如何运作的概述?
测试应用程序
#include <sys/socket.h>
int main()
{
return AF_INET;
}
Run Code Online (Sandbox Code Playgroud)
编译/链接输出:
cxx -Wc,xplink -Wl,xplink -o inet_test inet.C
"./inet.C", line 5.16: CCN5274 (S) The name lookup for "AF_INET" did not find a declaration.
CCN0797(I) Compilation failed for file ./inet.C. Object file not created.
Run Code Online (Sandbox Code Playgroud)
检查sys/sockets.h确实包含了我需要的定义,据我所知,它没有被任何#ifdef语句阻止.
但我注意到它包含以下内容:
#ifdef __cplusplus
extern "C" {
#endif
Run Code Online (Sandbox Code Playgroud)
它基本上封装了整个文件.不确定是否重要.