c 파일분할과 매크로
조회수 705회
visual studio 2017 사용중입니다.
파일분할 할 때, 매크로를 어떻게 해야할지 몰라서 여쭤봅니다..
예시로 작성해본 소스입니다.
이 소스를 두 방법으로 분할했는데요.
어떤 방법이 더 나은 방법인지 잘 모르겠습니다.
그리고 해시코드에 계신 분들은 더 나은 방법을 알고 계실것 같아 질문 드립니다!
main함수 선언&정의 -> main.c
KeyEvent선언 -> KeyEvent.h
KeyEvent정의 -> KeyEvent.c
매크로 -> KEY_MACRO.h
위와 같이 파일분할을 했는데, 저는 두가지 방법이 나왔습니다.
**1번 방법:
Macro.h를 Main.c와 KeyEvent.c에 include했습니다.
2번 방법:
Macro.h를 KeyEvent.h에 include하고,
KeyEvent.h를 Main.c와 KeyEvent.c에 include 했습니다.**
1번과 2번중에 어떤방법이 더 나을까요?
다른 의견이 있다면 알려주세요 다른 방법도 궁금합니다!
저는 많은 사람들의 의견을 듣고싶습니다!
배우고 싶습니다! 코드가 마음에 들지 않는 부분이 있다면 지적해주세요!
이해를 돕기 위해 예시코드 아래에 두가지 방법으로 분할 한 소스를 작성해놨습니다.(꼭 보지 않으 셔도 됩니다.)
예시 코드(아래, 분할하지 않은 코드입니다.)
#include <stdio.h>
#include <conio.h>
//Macro
#define KEY_EXIT 0
#define KEY_NO_INPUT 1
#define KEY_PAUSE 2
#define KEY_MOVE 3
//Macro 끝
//KeyEvent함수
int KeyEvent()
{
if(_kbhit)
{
switch(getch())
{
case 'P':
case 'p':
return KEY_PAUSE;
case 'E'
case 'e':
return KEY_EXIT;
case 'w':
case 'a':
case 's':
case 'd':
return KEY_MOVE;
default:
return KEY_NO_INPUT;
}
}
return KEY_NO_INPUT;
}
//KeyEvent함수 끝
//Main함수
int main()
{
int mode = KEY_NO_INPUT;
while(mode = KeyEvent())
{
switch(mode)
{
case KEY_PAUSE:
printf("pause\n");
//일시정지 코드
break;
case KEY_MOVE;
printf("move\n");
//이동 코드
break;
}
//여기에 mode값에 따라 코드 작성
}
return 0;
}
//Main함수 끝
.
.
.
1번. 파일 분할 예1(아래)
/* Macro.h*/
#define KEY_EXIT 0
#define KEY_NO_INPUT 1
#define KEY_PAUSE 2
#define KEY_MOVE 3
---------------------------------------------------------------------------
/* KeyEvent.h*/
int KeyEvent();
---------------------------------------------------------------------------
/* KeyEvent.c*/
#include "Macro.h"
int KeyEvent()
{
if(_kbhit)
{
switch(getch())
{
case 'P':
case 'p':
return KEY_PAUSE;
case 'E'
case 'e':
return KEY_EXIT;
case 'w':
case 'a':
case 's':
case 'd':
return KEY_MOVE;
default:
return KEY_NO_INPUT;
}
}
return KEY_NO_INPUT;
}
---------------------------------------------------------------------------
/* main.c*/
#include <stdio.h>
#include "Macro.h"
#include "KeyEvent.h"
int main()
{
int mode = KEY_NO_INPUT;
while(mode = KeyEvent())
{
switch(mode)
{
case KEY_PAUSE:
printf("pause\n");
//일시정지 코드
break;
case KEY_MOVE;
printf("move\n");
//이동 코드
break;
}
//여기에 mode값에 따라 코드 작성
}
return 0;
}
---------------------------------------------------------------------------
.
2번. 파일 분할 예2(아래)
/* Macro.h*/
#define KEY_EXIT 0
#define KEY_NO_INPUT 1
#define KEY_PAUSE 2
#define KEY_MOVE 3
---------------------------------------------------------------------------
/* KeyEvent.h*/
#include "Macro.h"
int KeyEvent();
---------------------------------------------------------------------------
/* KeyEvent.c*/
#include "KeyEvent.h"
int KeyEvent()
{
if(_kbhit)
{
switch(getch())
{
case 'P':
case 'p':
return KEY_PAUSE;
case 'E'
case 'e':
return KEY_EXIT;
case 'w':
case 'a':
case 's':
case 'd':
return KEY_MOVE;
default:
return KEY_NO_INPUT;
}
}
return KEY_NO_INPUT;
}
---------------------------------------------------------------------------
/* main.c*/
#include <stdio.h>
#include "KeyEvent.h"
int main()
{
int mode = KEY_NO_INPUT;
while(mode = KeyEvent())
{
switch(mode)
{
case KEY_PAUSE:
printf("pause\n");
//일시정지 코드
break;
case KEY_MOVE;
printf("move\n");
//이동 코드
break;
}
//여기에 mode값에 따라 코드 작성
}
return 0;
}
---------------------------------------------------------------------------
댓글 입력