[질문]cpp를 만들지 않고 h에 클래스 정의까지 했을때 발생한 컴파일 에러에 관하여
안녕하세요. cpp파일을 생성하지않고 h파일만 만들어 클래스를 만들고 함수 정의까지 했습니다.
그런데 클래스 함수내에서 변수를 선언하고 값을 대입하는 코드를 만들어 컴파일하니 이상하게 아래와 같이 에러가 나오면서 컴파일이 안되네요..
int*___errno() .obj/main.o
ld: 치명적: 기호 참조 오류. sqltest에 출력이 기록되지 않음
아래 코드에서 1번 2번 대입하는부분을 없애고 컴파일 하면 잘됩니다.
참고로 int errno=0; 처럼 초기값을 넣어도 에러가 뜨네요.. 그리고 int형뿐아니고 함수내에 모든 변수값이 전부 대입코드가 있을때 컴파일이 안됩니다.
class CRecord
{
...생략...
ACE_TString getStringValue(ACE_TString Name,int *rerrno=NULL) {
ACE_TString rValue;
int errno;
_stInset *stInset = NULL;
// 1 대입부
errno = Datamap.find(Name, stInset);
if(rerrno!=NULL)
*rerrno = errno;
// 2 대입부
if(errno == 0)
{
rValue = stInset->stValue;
}
return rValue;
}
...생략....
}
OS는 솔라리스 10이며 컴파일러는 CC입니다.
아시는분 답변해주시면 감사하겠습니다.
남은 시간도 즐거운 시간되세요..
표준 헤더랑
표준 헤더랑 충돌했군요.
errno 변수를 다른 이름으로 바꿔보세요.
----
익명이나 오래전 글에 리플은 무조건 -1
[해결]답변감사합니다.
정말 되네요..
변수이름이 설마 충돌이라고는 생각도 못했네요..
댓글 달기