我在使用 C 套接字 API 在 z/OS 上在 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", 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.
对 sys/sockets.h 的检查确实包含了我需要的定义,而且据我所知,它没有被任何 #ifdef
语句阻塞。
然而,我注意到它包含以下内容:
#ifdef __cplusplus
extern "C" {
#endif
它基本上封装了整个文件? 不知道这是否重要。