본문 바로가기

Exercise & Quizz/C++

Stack calculator #5 - Infix - Postfix translation using Stask structure

첫번째 프로젝트 - Stack Calculator 05

Here is tips and How to make executive file.


몇가지 tip을 먼저 씁니다.

 

makefile

 

a.out : node.o que_handler.o main.o
        g++ -o a.out node.o que_handler.o main.o
node.o : node.h node.cpp
        g++ -c node.cpp
que_handler.o: que_handler.h que_handler.cpp
        g++ -c que_handler.cpp
main.o : main.cpp main.h
        g++ -c main.cpp

 

g++을 사용할 경우 - linux 에서 코딩할 경우에 사용합니다. 여러개의 파일로 나누어 작업한 파일을 합쳐서 컴파일 및 링크를 간편하게 할 수 있습니다. 문법은 찾아보시기를.. 문법을 봐도 사실 무슨 말인지 알기 참 어렵습니다 .이 것은 그런 분들을 위한 실제적인 예제 입니다. 그리고, 이 makefile은 stack calculator를 위한 것이 아닙니다. 그냥 예 입니다.

 

첫번째 두번째 줄만 설명하면

a.out  - 만들려는 (g++ 실행 뒤의 결과) 파일

':'  문법 입니다 .

node.o que_handler.o main.o - a.out을 만드는데 필요한 파일들

여백 : 반드시 tap으로 띄워야 합니다. 잘 안되면 vi나 pico를 이용해서 tap을 추가해 주세요.

g++ 이하 - 실제 실행 명령어

프로그램은 헤더파일과 cpp 파일로 나누어 작업합니다. 처음엔 조금 불편하지만 익숙해지면 오히려 편합니다.

 

#ifndef __iostream_H__ //기본 입출력 헤더
#define __iostream_H__
#include <iostream.h>
#endif

 

 헤더 파일 include가 중복되지 않도록 해주는 선언입니다.

#ifndef  : if not defined : 어떤 헤더파일을 include 할 때마다 표시를 만들어 둡니다. 이 경우 #define __iostrem_H__ 가 그 역할을 합니다. 실제 프로그램적 기능은 전혀 없고 단지 표식 일 뿐입니다. 이름의 경우, 여백과 . 대신에 _ 를 쓰고, 모두 대문자를 쓰는 것이 일반적인 약속입니다만 뭐 좀 틀리게 해도 큰 문제는 없습니다. 하나의 프로젝트 안에서 통일만 시키면 됩니다.

 

 __iostream_H__ 이 표식이 없으면 표식을 만들고  <iostream.h>를 include 해라  라는 구문입니다. 표식이 이미 만들어져 있다면 바로 #endif 로 넘어가겠지요.