본문 바로가기

컴퓨터/디버깅32

no match for ‘operator<’ in ‘__x < __y’ 위와 같은 에러는 주로 std::map이나 std::set에 넣는 객체가 operator< 를 갖고 있지 않을 때 발생한다. 전체 에러 메세지는 다음과 같다. (보면 알듯이 gcc 에서 난 에러 메세지임, VC++ 도 비슷한 류의 메세지가 뿌려질 것이다) g++ -c merge_norm_pcc_rank_networks.cpp /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h: In member function ‘bool std::less::operator()(const _Tp&, const _Tp&) const [with _Tp = edge]’: /usr/lib/gcc/i386-redhat-linux.. 2010. 4. 15.
l-value specifies const object L-value는 할당 연산자 = 를 기준으로 왼쪽에 있는 값, 즉 left-hand value 를 의미하는 것으로, C에서 L-value는 특정한 값으로 설정될 수 있는 변수이어야 함을 의미하는 경우가 대부분이다. 즉, a = 3; 위와 같은 구문이 있을 때, 우리는 a라는 변수는 값을 변화시킬 수 있는 특성을 갖고 있다는 것을 가정한다. 만약 a 라는 변수가 그 값을 변화시킬 수 없는 변수라면 위와 같은 구문은 에러를 발생시킨다. 제목의 l-value specifies const object 에러 역시 이와 같은 경우로, 말 그대로 해석하자면 'l-value는 const 객체로 지정되어 있다', (그런데 넌 지금 뭐를 하려고 하는 거니?') 정도. 즉, 값을 변경할 수 없다고 상수로 선언한 상태에서 값.. 2010. 4. 13.
명확하지 않게 다가오는 컴파일 에러 메세지들과 그 뜻 글에 대한 공지 만약 검색 엔진에 컴파일 에러 메세지를 입력하여 이 글을 읽게 되었다면, 에러 메세지와, 에러가 난 코드를 답글로 달아 주세요. 같이 풀어 봅시다. 컴파일러의 에러 메세지를 보고 그 원인을 곧바로 생각하기가 가끔 어려울 때가 있다. 하지만 에러가 난 곳을 제대로 찾거나 조금만 들여다 보면 물론 컴파일러 제작자들의 노고에 감사하지 않을 수 없을만큼 에러 메세지의 의미가 명확해 지는데, 이 글은 그와 같은 경우들에 대해서 살펴 보도록 한다. 내가 작업하며서 만나게 될 그와 같은 경우들을 정리하는 것이기 때문에 꽤 오랜 기간에 걸쳐 추가/수정이 이루어질 것으로 생각하고 있다. 사용 컴파일러에 대한 표시는 다음을 따른다. VC6 : Visual Studio 6.0 VC9 : Visual Stud.. 2009. 12. 30.
별로 바꾼 것도 없는데 갑자기 에러가 수십, 수백개 날 때 글에 대한 공지 만약 검색 엔진에 컴파일 에러 메세지를 입력하여 이 글을 읽게 되었다면, 에러 메세지와, 에러가 난 코드를 답글로 달아 주세요. 같이 풀어 봅시다. 코드의 아주 일부만 바꾸었을 뿐인데 갑자기 없던 에러가 몇 십 개, 몇 백개 날 때가 있다. 그 때는 주로 pre-compiler에 의한 문제로, 코드 상에 잘못 주석처리된 부분이 있다거나, 코드 중간에 이상한 문자가 뜬금없이 들어가 있을 때이다. Visual Studio의 경우, F4를 눌렀을 때 찾아가는 위치가 실제 에러의 원인이 되는 곳과는 전혀 다른 곳이라는 점. 예를 들면 이런 경우다. --------------------Configuration: test - Win32 Debug-------------------- Compiling.. 2009. 12. 27.