我在让 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
基本上封装了整个文件?不确定是否重要。