API를 공부하다보니 함수가 재정의 되고 치완되는 값이 많은데 도대체 #define 설정을 그저 천저치 명령어로
가볍게 넘어가서 혼란이 올때가 있어 다시 정리해봅니다.
#define은 말그대로 어떤 대상을 치환하여 설정된 값으로 변경해줍니다.
아래 예제와 같이 간단한 숫자를 미리 설정할 수도 있습니다.
#include <stdio.h> #define pi 3.1415167 void main() { printf(" %f ", pi); } |
//출력 결과 3.1415167 |
또는 하나의 대입뿐만 아니라 수식으로도 활용할 수 있습니다.
#include <stdio.h> #define PLUS(x,y) x+y void main() { int Number = PLUS(5,5) printf(" %d" , Nubmer); } |
//출력 결과 10 |
다만, 복잡한 대입연산의 경우 ()를 제대로 설정해주야 원하는 값이 나오기도 하고 추후 디버깅도 용이하기 때문에 inline 함수를 사용하는것이 더 좋습니다.
추가적인 #define 문법
1. # 연산자 (문자열로 치환)
: 받아온 매크로 변수를 문자열로 바꾸어주는 연산자입니다.
#include <stdio.h> #define PRINTSTR(str) printf(#str) void main() { PRINTSTR(HELLO WORLD); } |
//출력 결과 HELLO WORLD |
2. ## 연산자 (두가지 인수를 연결)
: 두가지 인수를 연결하는 연산자 입니다.
#include <stdio.h> #define SUM(a,b) a##b void main() { int Number = SUM(1,4); printf(" %d" , Number); char str[100] = SUM("안녕" , "하세요"); printf("%s" , str); } |
//출력 결과 14 안녕하세요. |
2. \ 연산자 (매크로 이어쓰기)
: 메크로 정의가 길어질 경우 \를 사용해서 매크로를 이어서 작성할 수 있습니다.
#include <stdio.h> #define COUT(a) ; \ printf("%d", a) void main() { COUT(5); } |
//출력 결과 5 |
작성 중..
'프로그래밍 > C++' 카테고리의 다른 글
[ C++]클래스 상속(4) - 순수 가상 함수 & 다중 상속 (0) | 2015.09.29 |
---|---|
[ C++]클래스 상속(3) - 가상 함수 (0) | 2015.09.29 |
[ C++]클래스 상속(2) - 상속 객체와 포인터(객체 포인터) (0) | 2015.09.25 |
[ C++]클래스 상속(1) - 상속을 위한 조건 (0) | 2015.09.24 |
[C++] 구조체 (직접참조와 간접참조) (0) | 2015.09.11 |