'C++' Macro Function

토스트·2025년 4월 24일

'C++' basic

목록 보기
19/35

매크로 함수(Macro Function)

C/C++에서 #define을 사용해서 만드는, 함수처럼 보이지만 실제로는 코드 조각을 치환하는 전처리기 명령어입니다.
매크로 함수는 인자의 자료형을 신경쓰지 않으며, 함수가 아니기 때문에 함수 호출 오버헤드가 발생하지 않아 빠르게 동작합니다.
간단한 연산을 여러 번 쓸 때 편리하고, 실제 코드가 삽입되므로 최적화 가능성이 큽니다.

<문법 예시>

#include <iostream>

#define SQUARE(x) ((x) * (x))

using namespace std;

int main() {
	cout << SQUARE(3);

	return 0;
}

<결과값>

주의사항

매크로 함수는 타입 안정성을 보장하지 않습니다. 또한 디버깅이 어려우며, 예상치 못한 동작을 할 수도 있습니다.

<예상치 못한 동작 예시>

#include <iostream>

#define SQUARE(x) x * x

using namespace std;

int main() {
	cout << SQUARE(3 + 1); // 3 + 1 * 3 + 1 = 7

	return 0;
}

<결과>

결론

간단한 치환이 필요할 때 매크로 함수를 사용해도 되지만, 가능하면 인라인 함수를 사용하는 것이 더 안전하게 사용하기엔 더 좋습니다.
만약 매크로 함수를 사용해야 할 땐 반드시 괄호를 정확히 표시해주는 것이 좋습니다.

추가로, 매크로 상수 (예시, #define PI 3.14159) 대신 const/constexpr (const double PI = 3.14159;)를 사용하여 상수를 선언하는 것 또한 같은 이유에서 더 추천합니다.

0개의 댓글