<code> 객체와 클래스 중 "Stack.h" 컴파일시 열리지가 않는다는 error 발생..

wjdwnstjq의 이미지

안녕하세요.
본 문제는 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++교재를 봐가면서 기초를 다지며 하나씩 공부해 나가고 있는 상황이지만, 도무지 이유를 모르겠습니다;;
검색도 해보았지만, 딱히 와닿는 답변이 없어 글을 남기게 되었습니다. 
부족한 저에게 가르침좀 부탁드립니다.. ^^;

HDNua의 이미지

에러 메시지가 어떻게 떴는지를 직접 확인할 수가 없어서...
예상되는 거라곤 Stack.h 파일을 만들어놓고 stack.h 파일을 포함하는 경우(대소문자를 틀린 경우) 말곤 생각나는 게 없습니다.

Stack에 관한 클래스를 간단하게나마 만들어보고 테스트했습니다.

main.cpp
--------
코드를 여기다 직접 올리려니... 꺾쇠괄호가 자꾸 필요한 부분을 잘라먹어버리네요=_=
첨부 파일로 올렸습니다.
--------

// 주의할 점
1. 무조건 한 번은 실행해야 된다면, while보다는 do~while 문을 이용해 작성하세요.
2. 들여쓰기는 저렇게 중구난방으로 하는 거 아닙니다.
3. while문에 입력을 같이 받고 있던데, 이러지 마세요. 코드가 헷갈려집니다.

이제 막 배우는 시기인데 코드를 너무 복잡하게 짜는 것 같아서 답글 드려봤습니다.
혹 제가 정의한 Stack 클래스의 본체가 필요하시다면 답글로 달아드려볼게요.

댓글 첨부 파일: 
첨부파일 크기
Plain text icon main.txt2.1 KB

저는 이렇게 생각했습니다.

wjdwnstjq의 이미지

우선 관심과 지도 감사드립니다.
적어주신 예제를 그대로 사용하여 컴파일러 시도해보았지만 역시나 같은 에러가 발생하네요..
프로그램 문제인지.. 도통 이유를 알수 없습니다. 다른 기본적인 사칙연산 코드를 작성하여 컴파일러를 시도하면 성공적으로 원하는 결과가 나오는데.
"stack.h" 사용시만 이러네요.. error 관련하여 사진 첨부하여 올립니다.
한번더 지도 부탁드리겠습니다..

댓글 첨부 파일: 
첨부파일 크기
Image icon error.JPG0바이트
HDNua의 이미지

이 예제를 그대로 사용하시면 당연히 에러가 납니다.
올려드린 main 함수는, 님이 작성하신 코드에서 좋지 않아보이는 부분만
주석과 함께 수정해드렸던 코드이고... Node.h가 있는지 아닌지도 모르니까요.
오류를 보니 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났다는데... 혹시 헤더 파일에 틀린 부분은 없는지요.
세미콜론이 빠졌다던지, #ifndef 구문으로 정의하고 #endif를 넣지 않았다던지...

완성본을 첨부하겠습니다. 한글이 깨질 수도 있는데 일단 한 번 열어서 프로젝트에 집어넣어보셔요.

댓글 첨부 파일: 
첨부파일 크기
Package icon zip.zip4.2 KB

저는 이렇게 생각했습니다.

qiiiiiiiip의 이미지

에러메세지에 나와있는 것 처럼 미리 컴파일한 헤더(stdafx.h)를 인클루드하지 않아서 생기는,
visual studio 의 에러입니다.

해결 방법은
stdafx.h를 모든 .c 파일의 맨 앞에 include하거나,
프로젝트 속성에서 미리컴파일된 헤더 사용 부분을 No 로 체크하셔야합니다.

HDNua의 이미지

아... 그렇군요.
요즘 Xcode로 프로그래밍하고 있기도 하고 저 처음에 썼을 때 저런 오류가 뜨지도 않아 몰랐습니다.
본의 아니게 질문자님께 혼란 드려버렸네요.. 죄송합니다 ㅠ

저는 이렇게 생각했습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.