Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트
- oracle db
- 보안뉴스 한줄요약
- php
- javascript
- 보안뉴스한줄요약
- 자바스크립트 prototype
- 오라클
- 보안뉴스 요약
- 자바스크립트 API
- Oracle SQL
- 랜섬웨어
- 다크웹
- ES6
- 카카오프로젝트100
- 파이썬
- GIT
- 깃허브
- 카카오프로젝트 100
- numpy
- 자바스크립트 기본 문법
- 자바스크립트 jQuery
- 카카오프로젝트
- 보안뉴스
- 자바스크립트 객체
- 자바스크립트 node
- oracle
- python
- 자바스크립트 element api
- 보안뉴스요약
Archives
- Today
- Total
FU11M00N
[C언어] C언어 매크로 정의 본문
1. #define 매크로?
C나 C++에서 자주쓰이는 #define은 매크로를 정의 해줄때 쓰는 키워드입니다.
매크로는 프로그램 내에서 컴파일러가 매크로를 만나게되면 대체할 문자열을 정의하라는 뜻입니다. 매크로는 컴파일러가 컴파일을 시작하기전에, 전처리가 #define으로 정의된 기호상수 등을
확장 문자열로 변환을 시키는 동작이 일어납니다.
간단히 애기하자면 특정한 내용을 다른 내용으로 치환하고자 할 때 사용하는 전처리기입니다.
2. 매크로 상수
#define [매크로 상수명] [매크로 상수]
#define PI 3.14
이 의미는 3.14 매크로 상수를 PI라는 매크로 상수명에 치환을 하겠다는 의미입니다.
소스코드가 .obj 파일로 컴파일 되기전 위의 코드가 치환이 되어 컴파일을 합니다.
#include <stdio.h>
#define PI 3.14 //3.14를 PI에 치환
#define MHJ "문호준" // 문호준을 MHJ에 치환
int main(){
printf("PI의 값은? %lf\n",PI);
printf("MHJ의 값은? %s",MHJ);
return 0;
}
예제 처럼 문자와 정수 상관없이 치환이 가능합니다.
매크로명은 대부분 대문자로 쓰고 이걸 안지켜도 되지만 암묵적인 약속..? 이라고 봐도될것같습니다.
매크로를 사용하게되면 프로그램의 가독성이 높아질뿐이 아니라 값이나크기가 변경되어도 해당 매크로의 상수 값만
변경해준다면 소스 코드의 전체에서 내용이 변경되므로 유지보수에 효율적입니다.
#include <stdio.h>
int main(){
printf("__FILE__ %s\n",__FILE__); // 소스 코드 파일 이름
printf("__FILE__ %d\n",__LINE__);// 현재 소스 코드 라인 번호
printf("__FILE__ %s\n",__DATE__);// 소스 코드가 컴파일된 날짜
printf("__FILE__ %s\n",__TIME__);// 소스 코드가 컴파일된 시각
printf("__FILE__ %s\n",__TIMESTAMP__);// 소스 코드가 컴파일된 타임스탬프
return 0;
}
또한 C언어에서는 정의를 하지않아도 프로그램 개발에 도움을 주기위해 미리 정의가 되어있는 매크로들이 있습니다.
매크로 | 의미 |
__FILE__ | 소스 코드 파일 이름 |
__LINE__ | 현재 소스 코드 라인 번호 |
__DATE__ | 소스 코드가 컴파일된 날짜 |
__TIME__ | 소스 코드가 컴파일된 시각 |
__TIMESTAMP__ | 소스 코드가 컴파일된 타임스탬프 |
위의 표에는 따로 정의를 해주지 않아도 사용할수있는 매크로들입니다.
#include <stdio.h>
int main(){
printf("__FILE__ %s\n",__FILE__); // 소스 코드 파일 이름
printf("__FILE__ %d\n",__LINE__);// 현재 소스 코드 라인 번호
printf("__FILE__ %s\n",__DATE__);// 소스 코드가 컴파일된 날짜
printf("__FILE__ %s\n",__TIME__);// 소스 코드가 컴파일된 시각
printf("__FILE__ %s\n",__TIMESTAMP__);// 소스 코드가 컴파일된 타임스탬프
return 0;
}
'Programming > C Language' 카테고리의 다른 글
[C언어] Double Pointer (0) | 2020.08.13 |
---|---|
[C언어] 단일 링크드리스트 (2) | 2020.04.24 |
[C언어] printf 함수 (0) | 2020.04.19 |
C언어 비트 연산자 (1) | 2020.04.18 |
C언어 증감 연산자 (0) | 2020.04.18 |
Comments