일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 학교 개학 연기 4월
- 성남 코로나 확진자
- 이태원 클라쓰 15회 예고
- 금리인하
- 킹덤 고근희
- 픽크루
- 성남은혜의강교회
- 임영규
- 뭉쳐야 찬다
- 은혜의 강 교회
- 제넥신
- 유튜버 김재석
- 이지혜
- 미국 금리인하
- 고민정
- 해킹
- 최강욱
- 조희연
- 양적완화
- 김영권
- 스페인 코로나
- 불가피
- 김영권 아내
- 리리남매
- 이상형 만들기
- 홍혜걸
- 스콜피온킹
- libtins
- 김재석
- 폰폰테스트
Archives
- Today
- Total
Dork's port
invalid operands to binary expression (C++11) 본문
예전에 프로그램 코딩을 하다 bind함수에서 에러가 난적이 있는데 에러 코드는 위와 같이 invalid operands to binary expression를 뱉어 내면서 컴파일이 되지 않았다.
분명 Kali Linux에서는 정상적으로 동작하던 코드인데 안드로이드에서 컴파일 하려고 하니 오류가 났는데 이때 c++11로 컴파일을 명시하였다.
이부분에서 오는 오류였는데, c++11으로 발전하면서 std에 bind함수가 추가 되어 bind함수가 std::bind함수로 인식하여 컴파일러에서 다른 함수로 받아들여 이런 오류가 발생 한 것이다.(using namespace std 사용 시)
때문에 bind함수 또는 사용하려는 기타 함수가 stl에서 지원하는 함수이고 c++11로 컴파일하고자 한다면 해당 함수 명을 ::<함수명> 또는 namespace부분을 삭제 해주면 정상적으로 컴파일 될 것 이다. 소스코드로 보면 아래와 같다.
#include <iostream> using namespace std; int main() { bind(int __fd,const sockaddr *__addr,socklen_t __len); return 0; }
위의 소스코드를 아래와 같이 수정해주면 정상적으로 동작한다.
#include <iostream> //using namespace std; int main() { bind(int __fd,const sockaddr *__addr,socklen_t __len); return 0; }
또는 , 아래와 같이 바꿀 수 있다.
#include <iostream> using namespace std; int main() { ::bind(int __fd,const sockaddr *__addr,socklen_t __len); return 0; }
참고 : https://stackoverflow.com/questions/16180322/c-xcode-sockets-bind-error
'Develop' 카테고리의 다른 글
네트워크 각 헤더의 Next Type 파싱하기. (0) | 2017.09.25 |
---|---|
map 출력하기(C++) (0) | 2017.09.24 |
16진수로 값 출력 및 mac address 출력하기 (C++) (0) | 2017.09.22 |
Linux libpcap 을 이용한 packet capture (0) | 2017.09.22 |
Checksum 계산하기[소스 코드] (C++) (0) | 2017.09.22 |
Comments