<code> 객체와 클래스 중 "Stack.h" 컴파일시 열리지가 않는다는 error 발생..
글쓴이: wjdwnstjq / 작성시간: 토, 2012/10/06 - 12:51오후
안녕하세요.
본 문제는 C++ 기초플러스 10장 객체와 클래스 본문의 예제를 논하고자 합니다.
코드는 아래와 같습니다
-----------------------------------------------------------------------------------
// stacker.cpp -- Stack 클래스를 테스트한다 #include <iostream> #include <cctype> // 또는 ctype.h #include "stack.h" int main() { using namespace std; Stack st; // 비어 있는 스택을 생성한다 char ch; unsigned long po; cout << "주문서를 추가하려면 A, 주문서를 처리하려면 P,\n" << "종료하려면 Q를 입력하십시오.\n"; while (cin >> ch && toupper(ch) != 'Q') { while (cin.get() != '\n') continue; if (!isalpha(ch)) { cout << '\a'; continue; } switch (ch) { case 'A': case 'a': cout << "추가할 주문서의 번호를 입력하십시오: "; cin >> po; if (st.isfull()) cout << "스택이 가득 차 있습니다.\n"; else st.push(po); break; case 'P': case 'p': if (st.isempty()) cout << "스택이 비어 있습니다.\n"; else { st.pop(po); cout << "#" << po << " 주문서를 처리했습니다.\n"; } break; } cout << "주문서를 추가하려면 A, 주문서를 처리하려면 P,\n" << "종료하려면 Q를 입력하십시오.\n"; } cout << "프로그램을 종료합니다.\n"; return 0; } ----------------------------------------------------------------------------------- Q. 컴파일시 에러가 발생합니다. 스택함수를 열수없다고 합니다. 따로 정의를 내려야 하나요? ( ex) #define stack 등과 같이? ) 현재 C++교재를 봐가면서 기초를 다지며 하나씩 공부해 나가고 있는 상황이지만, 도무지 이유를 모르겠습니다;; 검색도 해보았지만, 딱히 와닿는 답변이 없어 글을 남기게 되었습니다. 부족한 저에게 가르침좀 부탁드립니다.. ^^;
Forums:
에러 메시지가 어떻게 떴는지를 직접 확인할 수가
에러 메시지가 어떻게 떴는지를 직접 확인할 수가 없어서...
예상되는 거라곤 Stack.h 파일을 만들어놓고 stack.h 파일을 포함하는 경우(대소문자를 틀린 경우) 말곤 생각나는 게 없습니다.
Stack에 관한 클래스를 간단하게나마 만들어보고 테스트했습니다.
main.cpp
--------
코드를 여기다 직접 올리려니... 꺾쇠괄호가 자꾸 필요한 부분을 잘라먹어버리네요=_=
첨부 파일로 올렸습니다.
--------
// 주의할 점
1. 무조건 한 번은 실행해야 된다면, while보다는 do~while 문을 이용해 작성하세요.
2. 들여쓰기는 저렇게 중구난방으로 하는 거 아닙니다.
3. while문에 입력을 같이 받고 있던데, 이러지 마세요. 코드가 헷갈려집니다.
이제 막 배우는 시기인데 코드를 너무 복잡하게 짜는 것 같아서 답글 드려봤습니다.
혹 제가 정의한 Stack 클래스의 본체가 필요하시다면 답글로 달아드려볼게요.
저는 이렇게 생각했습니다.
답변감사합니다. 또 질문이있어요..
우선 관심과 지도 감사드립니다.
적어주신 예제를 그대로 사용하여 컴파일러 시도해보았지만 역시나 같은 에러가 발생하네요..
프로그램 문제인지.. 도통 이유를 알수 없습니다. 다른 기본적인 사칙연산 코드를 작성하여 컴파일러를 시도하면 성공적으로 원하는 결과가 나오는데.
"stack.h" 사용시만 이러네요.. error 관련하여 사진 첨부하여 올립니다.
한번더 지도 부탁드리겠습니다..
이 예제를 그대로 사용하시면 당연히 에러가
이 예제를 그대로 사용하시면 당연히 에러가 납니다.
올려드린 main 함수는, 님이 작성하신 코드에서 좋지 않아보이는 부분만
주석과 함께 수정해드렸던 코드이고... Node.h가 있는지 아닌지도 모르니까요.
오류를 보니 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났다는데... 혹시 헤더 파일에 틀린 부분은 없는지요.
세미콜론이 빠졌다던지, #ifndef 구문으로 정의하고 #endif를 넣지 않았다던지...
완성본을 첨부하겠습니다. 한글이 깨질 수도 있는데 일단 한 번 열어서 프로젝트에 집어넣어보셔요.
저는 이렇게 생각했습니다.
에러메세지에 나와있는 것 처럼 미리 컴파일한
에러메세지에 나와있는 것 처럼 미리 컴파일한 헤더(stdafx.h)를 인클루드하지 않아서 생기는,
visual studio 의 에러입니다.
해결 방법은
stdafx.h를 모든 .c 파일의 맨 앞에 include하거나,
프로젝트 속성에서 미리컴파일된 헤더 사용 부분을 No 로 체크하셔야합니다.
아... 그렇군요. 요즘 Xcode로 프로그래밍하고
아... 그렇군요.
요즘 Xcode로 프로그래밍하고 있기도 하고 저 처음에 썼을 때 저런 오류가 뜨지도 않아 몰랐습니다.
본의 아니게 질문자님께 혼란 드려버렸네요.. 죄송합니다 ㅠ
저는 이렇게 생각했습니다.
댓글 달기