매크로

최근 수정 시각:
15
편집
IP 우회 수단(프록시 서버, VPN, Tor 등)이나 IDC 대역 IP로 접속하셨습니다. (#'30183489')
(VPN이나 iCloud의 비공개 릴레이를 사용 중인 경우 나타날 수 있습니다.)
잘못된 IDC 대역 차단이라고 생각하시는 경우 게시판에 문의하시길 바랍니다.
토론역사
 
다른 뜻 아이콘   나무위키의 매크로에 대한 내용은 나무위키:문법 도움말 문서의 매크로 부분을 참고하십시오.
 
1. 접두어2. 컴퓨터 용어
2.1. 프로그래밍에서의 매크로2.2. 온라인 게임에서의 매크로2.3. 인터넷에서의 매크로
3. 카메라 렌즈의 한 종류4. 다량영양소5. 파생어
 

1. 접두어[편집]

 
Macro

「거대한」이라는 의미를 나타내는 접두어로 「아주 작은」이란 뜻의 접두어 마이크로(Micro)와는 비교된다. 예를 들어 Macrophysics(거시물리학)이 그것. 경제학에서는 Microeconomics, 즉 미시경제학과 반대되는 Macroeconomics, 즉 거시경제학의 용례가 있다. 최근에는 매크로가 「전체」, 마이크로가 「개별」이라는 의미가 되어 '매크로'는 GNP, '마이크로'는 기업의 대명사처럼 쓰이는 경우도 있다.
 
흔히 쓰이는 의미로는 자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 말한다. 매크로 하면 대개 이 문단을 의미하며 컴퓨터활용능력의 기타작업에서 배운다. 매크로 작업 끝나고 visual basic 찍어보면 프로시저로 나온다. 1급에서 배우며 기타작업의 최종보스급 문제다. 복잡하거나 반복되는 작업을 단순화하거나 자동화하기 위한 목적으로 주로 이용한다. 어셈블리 언어에서도 많이 사용되며, 마이크로소프트 엑셀 등의 스프레드시트도 매크로를 지원하는 등 다양한 플랫폼에서 활용된다. 반복 작업을 간단하게 수행하기 위한 목적뿐만 아니라 문서 안의 같은 문자열을 한꺼번에 변경할 때도 사용된다.
 

2.1. 프로그래밍에서의 매크로[편집]

 
본래 매크로라는 개념 자체는 프로그래밍 언어의 기능에서 처음 등장한다. 몇몇 언어는 컴파일러에서 특정 단어를 코드로 치환하는 기능을 제공한다. 이렇게 정의한 단어를 전처리기 키워드라고 하는데, 전처리기 키워드를 정의하면 컴파일러가 컴파일을 시작하기 전에 전처리기 키워드를 코드로 변환하고 시작한다. 이 기능이 처음 도입된 LISP에서는 약식 문법을 써서 컴파일러에서 특정 단어를 코드로 치환하는 기능을 제공했다. 이 기능은 원래 코드를 크게 확장한다는 의미에서 macroexpand라는 용어로 불렸으며, 이 확장 방법에 대한 규칙을 macro라고 부르는데, 이후의 언어들에서도 이 용어가 굳어졌다.

매크로의 주된 용법은 상수 정의, 인라이닝, 문법 정의/변형 등이 있다. 상수 정의나 인라이닝의 경우 컴파일러가 잘 최적화하지 못 하는 경우에도 강제로 치환해버릴 수 있다. 매크로 자체는 실행 시간에 거의 영향을 주지 않기 때문에 성능을 위해 쓰는 경우가 있긴 하다. 반복적인 자료형 선언 부분도 매크로가 아닌 다른 방법으로는 작업하기 힘든 경우가 간혹 있다. 문법 변형의 경우 언어에 따라 다르긴 하지만, C언어/C++에서의 매크로는 어떤 키워드를 코드로 치환하는 것이 기본으로서 범용 인자를 받는다든가 코드를 문자열로 바꾼다든가 이름을 바꾸는 정도의 기능을 제공한다. 사실 C/C++의 경우 다른 언어들에 비해 기능이 빈약한 편이다. 현존 언어들 중 탑급 매크로를 탑재하고 있는 LISP의 경우 아예 언어를 재창조하는 수준의 매크로도 작성이 가능하다. 아예 도메인 특화 언어(DSL)를 언어 위에서 새로 작성해버리는 짓이 가능하다[1] Rust도 강력한 매크로 시스템을 가지고 있어서 C/C++보다 훨씬 복잡한 매크로를 작성 가능하다.

허나 최근에는 매크로를 지양하는 분위기가 짙다. 상수의 정의는 언어 차원에서 제공하는 경우가 많으며, 인라이닝도 컴파일러가 거의 모든 경우에 적절히 해주기 때문. 문법 변형의 경우 장점도 있고 다른 방식으로 대체하기도 힘들지만, 애초에 문법을 변형하는 순간 다른 사람이 코드를 이해하고 수정하기 힘들기 때문에 처음부터 변형할 필요도 없을 정도로 간결하고 적절한 문법을 제공하려 하는 추세다. 추가로 타입 안정성, 문법 같은 중요한 오류 점검도 매크로에는 기대하기 힘들며, 네임스페이스 같은 기능을 완전히 무시해버리는 등 찾기 힘든 잘못된 코드를 만들어내는 경우가 있다. 관리되지 않는 매크로는 점점 유지보수하기도 까다로우며 호환성 때문에 내치기도 어렵다.

매크로의 문제점을 해결하는 방안은 여러가지가 있다. C++을 예시를 들면 매크로 상수는 C++11 이전이면 enum hack을, C++11 이후라면 constexpr 상수로, 매크로 함수는 (템플릿) consteval 함수를 대신 사용하는 것이 바람직하다. Rust의 경우 매크로가 단어 치환이라기 보다는 어떠한 값도 인자로 받는 함수에 가깝다. Rust의 매크로는 사실상 제네릭 함수를 대체할 수 있다.

게으른 평가를 채택한 메타 프로그래밍 언어 중 극히 일부는 함수 호출 시 인자 대신에 코드와 환경을 전달해서 실행시간에 코드를 즉석에서 확장 및 평가하는 방식으로 매크로를 대체하기도 한다.
 

2.2. 온라인 게임에서의 매크로[편집]

 
상세 내용 아이콘   자세한 내용은 자동사냥 문서를 참고하십시오.
다른 뜻 아이콘   월드 오브 워크래프트의 매크로에 대한 내용은 월드 오브 워크래프트/매크로 문서를 참고하십시오.
 

2.3. 인터넷에서의 매크로[편집]

 
상세 내용 아이콘   자세한 내용은 문서를 참고하십시오.
 

3. 카메라 렌즈의 한 종류[편집]

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

매크로렌즈 문서를 참조한다.
 

4. 다량영양소[편집]

 
Macronutrients. 줄여서 macro로 부른다. 탄수화물, 단백질, 지방을 말한다. 반대로 비타민, 무기 염류 등은 미량영양소(micronutrients)로 불린다.
 

5. 파생어[편집]

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

매크로 답변: 문의나 불만에 대한 기업의 보편적이고 형식적인 답변을 말한다. Ex) 이 부분은 고객센터에 문의 바랍니다. 검토해보겠습니다.

 
[1] 단 LISP의 매크로는 지나치게 강력해서 오히려 문제가 되는 경우가 있다

크리에이티브 커먼즈 라이선스
이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외)
기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다.

나무위키는 백과사전이 아니며 검증되지 않았거나, 편향적이거나, 잘못된 서술이 있을 수 있습니다.
나무위키는 위키위키입니다. 여러분이 직접 문서를 고칠 수 있으며, 다른 사람의 의견을 원할 경우 직접 토론을 발제할 수 있습니다.

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
더 보기