Проблема при компиляцией с NODEFAULTLIB

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by winsock, 4 Oct 2010.

  1. winsock

    winsock New Member

    Joined:
    15 Aug 2010
    Messages:
    57
    Likes Received:
    2
    Reputations:
    0
    Если быть точнее все работает , но прога почему-то не закрывается, т.е. весь код выполняется , но при выходе из main-а нечего не происходит.

    Code:
    #include <WinSock2.h>
    #include <Windows.h>
    
    int main()
    {
    	WSADATA ws;
    	WSAStartup(MAKEWORD(2,2),&ws);
    	SOCKET httpsock = socket(AF_INET,SOCK_STREAM,0);
    
    	HOSTENT* hs;
    	if( (hs=gethostbyname("nix.ru"))==NULL){
    		closesocket(httpsock);
    		WSACleanup();
    		return false;
    	}
    	
    	sockaddr_in httpaddr;
    	httpaddr.sin_family=AF_INET;
    	httpaddr.sin_port=htons(80);
    	((unsigned long *)&httpaddr.sin_addr)[0]=((unsigned long **)hs->h_addr_list)[0][0];
    	
    
    	if(connect(httpsock,(sockaddr*)&httpaddr,sizeof(httpaddr))){
    		closesocket(httpsock);
    		WSACleanup();
    		return false;
    	}
    
    
    	return 0;
    }
    

    Хотя вот так все норм... %) хотя как норм...норм в том смысле , что прога закрывается нормально.

    Code:
    #include <WinSock2.h>
    #include <Windows.h>
    
    int  main()
    {
    	WSADATA ws;
    	WSAStartup(MAKEWORD(2,2),&ws);
    	SOCKET httpsock = socket(AF_INET,SOCK_STREAM,0);
    
    	HOSTENT* hs;
    	/*if( (hs=gethostbyname("nix.ru"))==NULL){
    		closesocket(httpsock);
    		WSACleanup();
    		return false;
    	}*/
    	
    	sockaddr_in httpaddr;
    	httpaddr.sin_family=AF_INET;
    	//httpaddr.sin_port=htons(80);
    	//((unsigned long *)&httpaddr.sin_addr)[0]=((unsigned long **)hs->h_addr_list)[0][0];
    	
    
    	if(connect(httpsock,(sockaddr*)&httpaddr,sizeof(httpaddr))){
    		closesocket(httpsock);
    		WSACleanup();
    		return false;
    	}
    
    
    	return 0;
    }
    
    При пошаговом выполнение на return 0

    [​IMG]

    Честно говоря не очень понимаю что это значит, и что при этом нужно делать.
     
    #1 winsock, 4 Oct 2010
    Last edited: 4 Oct 2010
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ставь ExitProcess(0); в конце и будет тебе счастье.
    К тому же я смотрю вы садист!
    не проще ли
    httpaddr.sin_addr.S_un.S_addr = *(ULONG*)(p->h_addr);
    намного понятнее чем твой код
     
    #2 slesh, 4 Oct 2010
    Last edited: 4 Oct 2010