| 주석 다는법 및 ifdef... 사용... |
Tech - https://ohyung.net/582 (YMD: 09/01/24 14:01)
Code Type : C
/*******************************************************************************
 * Project Name : 
 *
 * Version : 1.0
 * Copyright (c) 2009 : Ohyung ( ohyung@ohyung.com )
 * Last modified at : 2009.01.22
 * *****************************************************************************/


/*******************************************************************************
 *                        Include
 ******************************************************************************/
#include< stdio.h>


/*******************************************************************************
 *                        Define 
 ******************************************************************************/

#define EX1
//#define EX2
//#define EX3
//#define EX4
//#define EX5


/*******************************************************************************
 *                        Code
 ******************************************************************************/
#ifdef EX1
#include< unistd.h>
#include< termios.h>

int main(void)
{
 // EX1 프로그램 main
 return 0;
}
#endif

#ifdef EX2
int main(void)
{
 // EX2 프로그램 main
 return 0;
}
#endif


위와 같이 주석을 달면 그냥 보기 좋습니다 -.-;
교수님과 1주일에 한번 미팅을 하면서 보여주기식 코딩을 할때 쓰던겁니다...;;;

일단...
Code Type : C
/*******************************************************************************
 * Project Name : 
 *
 * Version : 1.0
 * Copyright (c) 2009 : Ohyung ( ohyung@ohyung.com )
 * Last modified at : 2009.01.22
 * *****************************************************************************/


파일의 최상단 부분의 코드전체의 주석입니다.
주석의 한줄은 80글자 입니다.
일반적인 리눅스 터미널 한화면은 80글자로 이루어져 있습니다.

그렇기 때문에 VI 편집기등에서 코딩을 할경우등에 대비하여 한줄에 80글자를 맞추는 것이 나중에 코딩하거나, 볼경우 편리하게 이용할 수 있습니다.

/* 여러줄 주석 부분 */ 이런식으로 주석 처리 되는것을 활용하여 여러줄에 걸쳐 주석을 답니다.
프로젝트의 이름을 쓰고 최종 수정일 아랫부분에 history를 넣을 수도 있습니다;
이것은 쓰기 나름 입니다.


인클루드 부분
Code Type : C
/*******************************************************************************
 *                        Include
******************************************************************************/
#include< stdio.h>


일반적으로 파일의 여러가지 헤더파일을 정의 해둡니다.
#include 나 stdlib.h등 처럼 추가 하시면 됩니다.


정의 부분.
/*******************************************************************************
*                       Define
******************************************************************************/
#define EX1 // 문제 1-1 helloWorld 연습
//#define EX2 // 문제 1-2 포인터 연습
//#define EX3 // 숙제 mygets 구현
//#define EX4
//#define EX5

위의 define EX1등은 한개의 파일에 여러가지 소스를 때려박을 때 편하게 사용됩니다.
즉 ex1.c, ex2.c, ex3.c 등을 한개의 파일에 담고 싶을경우 사용할 수 있는 방법입니다.
( 파일 한개만 열고 여러가지 소스 연습을 새로운 파일 생성없이 하고 싶은 경우 )
정의된 명칭을 EX1 라고 했는데 EXAM1 이나 EX1_1 등으로 사용 할 수도 있습니다.
단 정의는 대문자로 하는것이 일반적인 코더들에게 익숙합니다.

EX1 뒤의 주석은 해도 되고 안해도 됩니다.
그러나 주석처리를 하여 EX1의 코드가 어떤것인지 설명해 두는것도 보기에 좋습니다.


그리고 본격적인 코드부분...
Code Type : C
/*******************************************************************************
 *                        Code
******************************************************************************/
#ifdef EX1
#include< unistd.h >
#include< termios.h >

int main(void)
{
 // EX1 프로그램 main
 return 0;
}
#endif
 

#ifdef EX2
int main(void)
{
 // EX2 프로그램 main
 return 0;
}
#endif

위에서 

#define EX1
//#define EX2
//#define EX3


이런식으로 EX2,EX3등은 // 로 한줄 주석처리 되어있습니다.
그리고 코드부분에서 보면 #ifdef EX1 라고 되어있습니다. 이것은 그뒤 처음 나오는 #endif와 대응 됩니다.
즉, EX1 코드가 실행됩니다.

다시 #define EX1 를 주석처리 하고 #define EX2를 주석 해제 한뒤 다시 컴파일을을 하게 되면 EX2 코드(코드가 빨간 부분)가 실행됩니다.


이와 같은 방법으로
#ifdef EX3
#include < math.h >
#define PI 3.141592

int a(void)
{
// EX3의 sub func 프로그램
return 0;
}

int main(void)
{
// EX3 프로그램 main
return 0;
}

#endif
까지의 코드를 또 추가 하여 넣고 코딩을 하면됩니다.

즉 define 명령과 ifdef, endif로 여러가지 main이 공존 하는 소스에서 원하는 것을 선택적으로 컴파일할 수 있게 됩니다.
여기엔 서브 함수, 또다른 define, 헤더 파일등등이 들어 갈 수도 있습니다.

이상 주석및 ifdef에 대한 설명이었습니다.
태그 : , ,
| 이 포스트에 대한 이용규약 |
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 라이센스 에 따라 이용하실 수 있습니다.
This work is licensed under a Creative Commons Attribution 2.0 Korea LicenseLink in a new window.

| 트랙백 |
트랙백 주소 :: https://www.ohyung.net/rserver.php?mode=tb&sl=582