매크로 (r20200302판)

문서 조회수 확인중...

파일:나무위키+유도.png   나무위키의 매크로에 대한 내용은 나무위키:문법 도움말 문서의 15번째 문단을 참조하십시오.


1. 접두어
2. 컴퓨터 용어
2.1. 프로그래밍에서의 매크로
2.2. 온라인 게임에서의 매크로
2.3. 인터넷에서의 매크로
3. 카메라 렌즈의 한 종류
4. 파생어


1. 접두어


Macro
「거대한」이라는 의미를 나타내는 접두어로 「아주 작은」이란 뜻의 접두어 마이크로(Micro)와는 비교된다. 예를 들어 Macrophysics(거시물리학)이 그것. 경제학에서는 Microeconomics, 즉 미시경제학과 반대되는 Macroeconomics, 즉 거시경제학의 용례가 있다. 최근에는 매크로가 「전체」, 마이크로가 「개별」이라는 의미가 되어 '매크로'는 GNP, '마이크로'는 기업의 대명사처럼 쓰이는 경우도 있다.

2. 컴퓨터 용어


흔히 쓰이는 의미로는 자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 말한다. 복잡하거나 반복되는 작업을 단순화하거나 자동화하기 위한 목적으로 주로 이용한다. 어셈블리 언어에서도 많이 사용되며, 마이크로소프트 엑셀 등의 스프레드시트도 매크로를 지원하는 등 다양한 플랫폼에서 활용된다. 반복 작업을 간단하게 수행하기 위한 목적뿐만 아니라 문서 안의 같은 문자열을 한꺼번에 변경 할 때도 사용된다.

2.1. 프로그래밍에서의 매크로


본래 매크로라는 개념 자체는 프로그래밍 언어의 기능에서 처음 등장한다. C/C++ 등, 매크로를 지원하는 언어에서 약식 문법을 정의하면, 컴파일러컴파일을 하기 전에 약식 문법으로 정의된 코드를 원래 코드로 변환을 한 후 컴파일한다. 이 기능이 처음 도입된 Lisp에서는 이 원래 코드로 변환하는 키워드를 원래 코드를 크게 확장한다는 의미에서 macroexpand라고 불렀고, 이 확장 규칙을 macro라고 부르는데, 이후의 언어들에서도 이 용어로 굳어지게 되었다.
C/C++에서의 매크로는 어떤 키워드를 코드로 치환하는 것이 기본으로, 인수를 받는다던가 코드를 문자열로 바꾼다던가 이름을 바꾸는 정도의 기능을 제공한다. 사실 C/C++의 매크로는 매크로 기능을 탑재하고 있는 다른 언어들에 비해 기능이 빈약한 편이다. 현존 언어들 중 탑급 매크로를 탑재하고 있는 Lisp의 경우 아예 언어를 재창조하는 수준의 매크로도 작성이 가능하다.[1] Rust도 강력한 매크로 시스템을 가지고 있어서 C/C++에 비해 더 복잡한 매크로도 작성 가능하다.
매크로의 주된 용도로는 상수 정의, 인라이닝, 문법 정의/변형 등이 있다. 상수 정의나 인라이닝의 경우 컴파일러가 잘 최적화하지 못 하는 경우에도 강제로 치환해버릴 수 있다. 문법 변형의 경우 언어에 따라 다르긴 하지만, Lisp 같은 경우 아예 도메인 특화 언어(DSL)를 언어 위에서 새로 작성해버리는 짓이 가능하다. 매크로 자체는 실행 시간에 거의 영향을 주지 않기 때문에 성능을 위해 쓰는 경우가 있긴 하다. 반복적인 자료형 선언 부분도 매크로가 아닌 다른 방법으로는 작업하기 힘든 경우가 간혹 있다.
다만 최근에는 매크로를 지양하는 분위기가 짙다. 상수의 정의는 언어차원에서 제공되는 경우가 많으며, 인라이닝도 컴파일러가 거의 모든 경우에 적절히 해주기 때문. 문법 변형의 경우 장점도 있고 다른 방식으로 대체하기도 힘들지만, 애초에 문법을 변형하는 순간 다른 사람이 코드를 이해하고 수정하기 힘들기 때문에, 처음부터 변형할 필요도 없을 정도로 간결하고 적절한 문법을 제공하려고 하는 추세다. 추가로 타입 안정성, 문법 같은 중요한 오류 점검도 매크로에는 기대하기 힘들며, 네임스페이스 같은 기능을 완전히 무시해버리고 정말 찾기 힘든 잘못된 식을 만들어내는 경우가 있다. C++ 기준으로 매크로 상수는 enum hack, constexpr을, 매크로 함수는 (템플릿) (constexpr) 함수를 대신 사용하는 것이 바람직하다.
게으른 평가 를 채택하고 메타 프로그래밍 언어 중 극히 일부는 함수 호출시 인수 대신에 인수 코드와 환경을 전달하는 것을 이용해서 실행시간에 코드를 확장 및 평가하기도 하는데, 이 경우 매크로를 이러한 방식으로 대체하기도 한다.

2.2. 온라인 게임에서의 매크로


파일:나무위키상세내용.png   자세한 내용은 자동사냥 문서를 참고하십시오.

흔히 오토라고 부르며 전략 시뮬레이션 게임에서는 한국식으로 운영이라고 하는 것을 영어권에서 매크로라고 표현한다. 반대로 컨트롤은 마이크로라고 한다. 슈팅게임류나 FPS에서 매크로라고 하면 주로 반동을 보정하는 매크로를 일컫으며 물론 불공정이용으로 밴먹으니 쓰지 말자.

2.3. 인터넷에서의 매크로


을 참고하자.


3. 카메라 렌즈의 한 종류


최소 초점 거리가 매우 짧아 작은 물체의 확대 촬영에 적합한 렌즈를 일컫는다. 주로 꽃, 벌레, 소품 촬영에 많이 사용된다. 흔들림에 취약하기 때문에 삼각대 및 손떨림 방지 기능이 필수로 여겨지며, 근거리 촬영시 노출 확보를 위해 링플래시를 후드 등에 장착하여 사용하기도 한다.

4. 파생어


스포츠, 특히 축구계에서 매크로라는 단어는 "패턴이 항상 정해진 플레이인데도 막을 수가 없다!"같은 스킬을 의미한다. 이른바 "알고도 못 막는 선수"인데, 이러한 매크로 플레이를 보여주는 대표적인 축구선수는 아르연 로번이 있다. 안쪽으로 꺾고 왼발로 감아차는 슈팅은 뻔하지만 득점률이 굉장하다.
[1] 단 LISP의 매크로는 지나치게 강력해서 오히려 문제가 되는 경우가 있다.