2013. 11. 14. by ymjoo

.h 파일 두개를 비교해서
#define IDENTIFIER "TOKEN" <- 이런식으로 되어있는 줄을 모두 비교합니다. (토큰이 문자열("")인 것만 비교)

비교 결과 포맷스트림이 조금이라도 다른 것들을 모두 찾아내 출력합니다.

예)
File1 :
#define STR1 "%s가 %d개 있습니다."
#define STR2 "%s가 %f만큼 있습니다."
#define STR3 "%.3f"

File2 :
#define STR1 "%d개의 %s가 있습니다."	// %d와 %s의 순서가 다릅니다.
#define STR2 "%s가 있습니다."		// %f가 없습니다.
#define STR3 "%f"			// 문제는 없어보이지만 일단 출력합니다.
#define STR99 "이건 파일1에 없습니다."	// Identifier가 동시에 존재하지 않으면 비교하지 않고 출력하지도 않습니다.




Form1 : 	파일 두개를 선택하고 검사를 시작하기 위한 폼입니다. 멤버로 CDefineMap을 두개 갖고 있습니다. (파일1, 파일2)
		파일1, 파일2를 차례로 검사한 뒤 비교를 시작합니다.
		비교 결과 위의 형식의 #define이 있으면 결과를 출력합니다.
		창의 윗쪽 텍스트에 별다른 의미는 없습니다.

CDefineMap :	프로젝트에서 사용하는 모든 #define, enum, struct를 저장하고 있습니다.
		STL 맵을 사용하여 Identifier를 key로 해서, struct MapData(Token의 full-string과 포맷스트림 순서를 저장)를 저장합니다.
		Form1에서 선택한 파일을 줄 단위로 읽어서 m_map에 저장합니다.
		다른 CDefineMap을 Param으로 받아서 위의 비교를 수행합니다. (Form1에서 file1->비교(file2) 수행)

PrintForm :	Form1에서 검사하기 버튼 이후 수행 결과를 출력합니다. 
		예)
		┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
		┃찾음 : 3개                                                                            ㅡㅁX ┃
		┣━━━━━━┯━━━━━━━━━━━┯━━━━━━━━━━━┯━━━━━━━┯━━━━━━━┫
		┃identifier  │File1                 │File2                 │File1 format  │File2 format  ┃
		┠──────┼───────────┼───────────┼───────┼───────┨
		┃STR1        │%s가 %d개 있습니다.   │%d개의 %s가 있습니다. │%s%d          │%d%s          ┃
		┠──────┼───────────┼───────────┼───────┼───────┨
		┃STR2        │%s가 %f만큼 있습니다. │%s가 있습니다.        │%s%f          │%s            ┃
		┠──────┼───────────┼───────────┼───────┼───────┨
		┃STR3        │%.3f                  │%f                    │%.3f          │%f            ┃
		┗━━━━━━┷━━━━━━━━━━━┷━━━━━━━━━━━┷━━━━━━━┷━━━━━━━┛

주의) 발견되는 비교 결과중 #ifdef로 이미 문제가 처리되어있는 경우가 있을 수 있습니다. 이 점 고려하지 않았으므로 사용시 주의하시기 바랍니다.



===============================================================
2014. 01. 28. by ymjoo 예외 처리한 내용 출력하지 않는 기능 추가

이제 File3(Exception)에 예외하고 싶은 항목의 identifier를 다음과 같은 방법으로 저장하면 출력하지 않습니다.
아래 형식을 지켜야 합니다.
#define identifier

========================
file : exceptionDefine.h
------------------------
#define STR1
#define STR2
========================

출력은 다음과 같습니다.
		┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
		┃찾음 : 3개                                                                            ㅡㅁX ┃
		┣━━━━━━┯━━━━━━━━━━━┯━━━━━━━━━━━┯━━━━━━━┯━━━━━━━┫
		┃STR3        │%.3f                  │%f                    │%.3f          │%f            ┃
		┗━━━━━━┷━━━━━━━━━━━┷━━━━━━━━━━━┷━━━━━━━┷━━━━━━━┛