2009-10-23 2 views
1

현재 USS 인터페이스를 사용하여 MVS에서 응용 프로그램을 이식하고 있습니다. 나는 다음과 같은 프로그램을 (++ 컴파일러 C를 ​​사용하여) 컴파일 문제에 직면하고 있습니다 :USS C++ 소켓 프로그래밍 및 _OE_SOCKETS

#define _XOPEN_SOURCE_EXTENDED 1 
#define _OE_SOCKETS 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 

int main() { 
    struct in_addr add; 
    int sd = socket(AF_INET, SOCK_STREAM, 0); 
    inet_ntoa(add); 
    return 0; 
} 

IBM의 문서는 (은 C++의 경우 _XOPEN_SOURCE_EXTENDED) 소켓 기능을 사용하려는 사람이 _OE_SOCKETS을 정의해야한다고 주장한다. 하지만 정의되지 않은 기호 소켓을 보내고 있습니다 :

690:  #ifndef _OE_SOCKETS /* must be __UU */ 
... 
732:   int  socket  (int, int, int); 
... 
780:  #endif /* ifndef _OE_SOCKETS */ 
:

$> c++ test.cpp 
"./test.cpp", line 10.12: CCN5274 (S) The name lookup for "socket" did not find a declaration. 
CCN0793(I) Compilation failed for file ./test.cpp. Object file not created. 
FSUM3065 The COMPILE step ended with return code 12. 
FSUM3017 Could not compile test.cpp. Correct the errors and try again. 

조사의 비트가 실제로 여기에이 파일의 추출물, 제가 손상된 SYS/socket.h 헤더 파일을 가지고 있다고 생각하게

#ifndef _OE_SOCKETS#ifdef _OE_SOCKETS이어야한다고 생각합니다.

누구든지 저에게 확인할 수 있습니까? 감사.

$> uname -a 
OS/390 S0W1 20.00 03 2094 

답변

1

나를 다시, 단지의 경우이 다른 사람에게 유용 할 것이다 :

마지막으로, UNAME 내가 사용하고 상자에 있습니다.

문서를 잘못 읽었습니다. 사용중인 C 컴파일러가 _OE_SOCKETS을 정의하지만 C++ 컴파일러를 사용하는 경우 _XOPEN_SOURCE_EXTENDED을 정의하지만 둘 다 정의하지는 마십시오!