我在z/OS上使用C++时遇到了C sockets API无法正常工作的问题。
尽管我包含了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
哪个封装了整个文件?不确定这是否重要。