일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 이태원 클라쓰 15회 예고
- 픽크루
- 스콜피온킹
- 조희연
- 해킹
- 고민정
- 미국 금리인하
- 유튜버 김재석
- 김영권 아내
- libtins
- 학교 개학 연기 4월
- 이지혜
- 은혜의 강 교회
- 이상형 만들기
- 리리남매
- 제넥신
- 뭉쳐야 찬다
- 임영규
- 김영권
- 금리인하
- 스페인 코로나
- 불가피
- 성남은혜의강교회
- 킹덤 고근희
- 양적완화
- 성남 코로나 확진자
- 폰폰테스트
- 홍혜걸
- 김재석
- 최강욱
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