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