मैं कुछ सी ++ कोड संकलित करने के लिए जी ++ 4.6.0 का उपयोग कर रहा हूं जो पहले के संस्करणों में सफलतापूर्वक संकलित किया गया था।sys/sockets.h और std :: bind में बाइंड() के बीच अंतर कैसे करें?
if (bind(iControl, (struct sockaddr *) &sa, sizeof(sa)) == -1)
throw runtime_error ("bind");
जहां iControl एक सॉकेट है, और सा एक struct sockaddr_in
है।
हालांकि, जी ++ 4.6 में मैं निम्नलिखित त्रुटि मिलती है:
comms.cpp:93:66: error: no match for ‘operator==’ in ‘std::bind(_Functor&&, _ArgTypes&& ...) [with _Functor = int&, _ArgTypes = {sockaddr*, long unsigned int}, typename std::_Bind_helper<_Functor, _ArgTypes>::type = std::_Bind<int(sockaddr*, long unsigned int)>]((* &((sockaddr*)(& sa))), (* &16ul)) == -0x00000000000000001’
comms.cpp: 93: 66: ध्यान दें: उम्मीदवार हैं:
पेज और संभव उम्मीदवारों की एक आधा के बारे में के बाद ।
यह sys/sockets.h
में functional
में std :: bind के साथ बांध कार्य को मिलाकर प्रतीत होता है। using namespace std
को हटाने के लिए मैं अपनी पूरी स्रोत फ़ाइल को फिर से लिखने के बिना दोनों को कैसे असंबद्ध कर सकता हूं?
जानना चाहते हैं कि 'नेमस्पेस std का उपयोग क्यों करें;' इतना अच्छा विचार नहीं है? :-) –
ओपनसीवी का उपयोग करते समय भी इसी तरह के मुद्दे बढ़ सकते हैं। –
@ बॉपरसन मैंने पाया होगा क्यों: पी लेकिन यह कोड मेरी रक्षा में मुझे बताता है। –