티스토리 뷰

#define

#define은 매크로 상수와 함수를 정의하기 위해서 사용한다.
예를 들면 

#define PI 3.141592

위의 코드는 PI를 3.141592로 정의한 것이다.
즉, 

printf("%f \n", PI);

는 컴파일 전에

printf("%f \n, 3.141592);

로 치환되어 번역될 것이다. 
이 때 PI를 매크로 상수라 한다.

주의할 점

#define A B C

- A를 B C로 정의한 것 (o)
- A B를 C로 정의한 것 (x)

매크로 상수를 사용하는 이유

- 상수에 비해 메모리를 차지하지 않는다.
- 프로그램을 읽기 좋게 만든다.
- 프로그램의 유지보수를 쉽게 만든다.

매크로 함수 

기본 형태는 아래와 같이 사용한다.

#define MAX(a,b) a>b?a:b


하지만 매크로 함수를 사용할 때 주의해야할 점이 있다.

아래의 코드를 보면 많은 사람들이 결과를 20으로 예상할 것이다.


#define MUL(a,b) a*b
void main()
{
	printf("%d\n",MUL(2+3,4));
}


하지만 실제로 결과는 14이다.

그 이유는 연산자 우선순위에 의해 2+3을 a로, 4를 b로 치환하므로

MUL(2+3,4)는 2+3*4 가 된다. 따라서 2+12 = 14 가 결과가 되는것이다.


그러므로 꼭 매크로 함수의 파라미터는 아래처럼 괄호로 묶어야한다.


#define MUL(a,b) (a)*(b)

'programming language > c++' 카테고리의 다른 글

[C++] char[] 와 char*의 차이  (0) 2020.06.12
[c++] 복사생성자, 깊은 복사(Deep Copy)  (0) 2018.07.05
[c++] struct와 class의 차이  (0) 2018.06.14
[c++] freind 함수  (0) 2018.06.12
[c++] StringCbCopy, StringCchCopy  (1) 2018.06.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함