-
매크로 함수Coding/Tip !! 2018. 10. 3. 07:23
매크로(define)
자주 사용하게 되는 상수 등을 문자형식으로 나타내어 편리하게 사용하게 하는 것이다.매크로 상수는 컴파일 전에 전처리기에 의해서 미리 치환되며 변수이용보다 처리속도가 빠르다.
#define을 사용하며 매크로 정의 시 앞부분에 써주면된다.
보통 대문자로 많이 정의하며 가독성을 높여주고 유지보수를 편하게 해준다.
Tip!
#은 전처리기의 의미로 컴파일,빌드 하기 전에 진행한다는 의미이다.
매크로 함수
[형식]
#define 매크로 상수이름 문자열 or 숫자
#define 매크로상수이름(인자) 수식 or 문자열 or 숫자
아래는 매크로 함수예시이다. 삼항연산자를 이용하였다.삼항연산자 -> (조건식) ? (참 일때) : (거짓 일때)
12345678910111213#include <iostream>using namespace std;#define MAX(a, b) ((a > b) ? a : b) -> 삼항연산자를 괄호로 감싸야 사용가능함 없으면 에러발생//#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -> 위와같음, 단순히 숫자가아닌 1+3같이 뭔가 수식이 들어가게되면// 제대로 값이 나오지 않을 수 있기 때문에 괄호를 더 넣어준 경우임int main(){cout << MAX(7,2) << endl;cout << MAX(5+8*7,111) << endl;return 0;}매크로 함수 사용 시 주의사항!!
아래와 같은 코드가 있다.
main.cpp
1234567891011121314#include <iostream>#include "test.h"#define MACusing namespace std;void testname();int main(){testname();return 0;}test.h
12345678910111213#include <iostream>using namespace std;void testname(){#ifdef MACcout << "PRO" << endl;#elsecout << "AIR" << endl;#endif}이 경우 결과는 예상과 다르게 "PRO"가 출력되지 않는다.
MAC이 이미 main.cpp에 #define이 되어있는데도 불구하고 "AIR"가 출력된다.
그 이유는 매크로의 효력 범위가 정의된 파일에서만 가능하기 때문이다.
반응형'Coding > Tip !!' 카테고리의 다른 글
자료형 크기와 범위 코딩하기 (0) 2018.10.03 변수 초기화 방법 (0) 2018.10.03 Header Gurad (0) 2018.10.02 c++ 동적 배열 사용 vector (0) 2018.09.19 C++ auto 키워드 사용하기 (0) 2018.09.19 댓글