전처리문

언어/C 2016. 5. 2. 14:03

전처리문 : 실질적인 컴파일 이전에 미리 처리되는 문장, 컴파일러는 사용자가 작성한 코드를 컴파일하기 전에 전처리문에서 정의해 놓은 작업들을 먼저 수행함

기존의 방대한 소스 코드를 지우지 않고 활성/비활성 하는 데에 가장 많이 이용된다. 기존의 소스 코드를 건드리지 않는 상태에서 부분적인 컴파일!


- 파일 처리 전처리문 : #include

- 형태 정의 전처리문 : #define, #undef

- 조건 처리 전처리문 : #if, #ifdef, #ifndef, #else, #elif, #endif

- 에러 처리 전처리문 : #error

- 디버깅 전처리문 : #line

- 컴파일 옵션 처리 전처리문 : #pragma


조건 처리 전처리문은 어떤 조건에 대한 검사를 하고 그 결과를 참(0이 아닌 값) 또는 거짓(0)으로 돌려준다.

#if : ...이 참이라면

#ifdef : ...이 정의되어 있다면

#else : #if 나 #ifdef에 대응된다

#elif : "else + if"의 의미

#endif : #if, #ifdef, #infdef 이 끝났음을 알림


#include

 #include <stdio.h>        /* 이 위치에 stdio.h라는 파일을 포함시킨다. */

 #include "text.h"           /* 이 위치에 text.h라는 파일을 포함시킨다. */

 

'<...>'를 사용할 때와 '"..."'를 사용할 때의 차이점은 '<...>'는 컴파일러의 표준 포함 파일 디렉토리(또는 사용자가 별도로 지정해 준)에서 파일을 찾는 것을 기본으로 한다.  그리고 "..."'를 사용했을 때는 현재의 디렉토리를 기본으로 파일을 찾게 된다. 아예 디렉토리를 같이 지정할 수도 있다.


  #include <C:\MYDIR\MYHEAD.H>

  #include "C:\MYDIR\MYHEAD.H"


#define

상수값을 지정하기 위한 예약어로 매크로라고 부른다. 구문의 상수로 치환한다. 

또한 #define은 함수 역활과 비슷하게 아래와 같이 쓰일 수 있다. 

#define SUM(x) ((x) = (x) + (x))

동작원리는 함수와 같다. 말 그대로 main소스에서 SUM을 호출하면 옆에 있는 더하기 코드가 치환되는 것이다.

 

#define으로 정의할 수 있는 것은 숫자만이 아니다.

#define MYNAME "Young Hee"

printf(MYNAME);

라고 한다면 이는 전처리기에 의해 

printf("Young Hee");와 같이 전개되는 것이다.


출처 : http://www.sosori.com/2009/09/전처리문의-종류include-define-ifdef.html

'언어 > C' 카테고리의 다른 글

getc() 함수를 사용했을 때의 오류  (0) 2016.09.28
함수 포인터 컴파일 오류  (0) 2016.09.26
signed와 unsigned  (0) 2016.05.02
typedef  (0) 2016.05.02
static 변수  (0) 2016.03.21
Posted by 知彼知己百戰不殆
,

signed와 unsigned

언어/C 2016. 5. 2. 13:31

signed unsigned는 컴퓨터 프로그램에서 수를 표기하는 자료형의 특성이다.


signed

C/C++ 프로그램 언어에서 정수형 변수 중 부호를 갖는 변수를 선언 한다. 정수형 중 음수는 2의 보수 체계를 사용하므로 이 키워드에 의해 부호를 사용할 수 있도록 변수 선언할 수 있다. 그러나 정수형의 변수에서 unsigned가 없으면 음수를 사용할 수 있는 부호를 갖는 정수형이 된다. 


unsigned

unsigned C/C++ 언어에서 사용되는 지정자로 정수형과 같이 사용되어 부호 비트를 제거해 저장 가능한 양수 범위를 두배로 늘이는 역할을 한다. char int의 signed 정수형 변수에서 MSB가 부호 비트이다. 1이면 음수이고 0이면 양수이다. 그러나 unsigned을 사용하면 음수를 사용하지 않겠다는 의미 이므로 부호 비트가 필요 없다. 따라서 이진수와 같은 십진수가 된다.


unsigned char

8비트 정수형 변수 선언 char와 결합하여 선언하면 부호 비트가 필요 없으므로 0~255 범위를 갖는다.

10진수    2진수

255        1111 1111

254        1111 1110

253        1111 1101


출처 : 위키백과

'언어 > C' 카테고리의 다른 글

함수 포인터 컴파일 오류  (0) 2016.09.26
전처리문  (0) 2016.05.02
typedef  (0) 2016.05.02
static 변수  (0) 2016.03.21
메모리 관리와 메모리의 동적 할당  (0) 2016.03.20
Posted by 知彼知己百戰不殆
,

gcc -S -o (목적파일 이름) (소스파일 이름)


Posted by 知彼知己百戰不殆
,