매크로 함수 예제

이 것의 아주 간단한 예는 매크로 구성. 구성은 함수의 확장입니다. 0 개 이상의 함수 사양 (일반적으로 함수 이름)이 필요하지만 (lambda …) 양식일 수 있으며 하나의 함수로 “구성”할 수 있습니다. 즉, 일반적으로 매크로 언어 함수는 하나 이상의 인수를 처리하고 결과를 생성합니다. 매크로 정의와 열린 코드 모두에서 모든 매크로 함수를 사용할 수 있습니다. 매크로 함수에는 문자 함수, 평가 함수 및 인용 함수가 포함됩니다. 매크로 언어 함수는 매크로 함수에 나열됩니다. 매개 변수 및 코드의 형식 검사가 반복되지 아니어 코드가 부풀어 오를 수 있습니다. 매크로 구문은 세미 콜론 이나 우선 순위의 순서가 방해가 될 수 있는 이상한 가장자리 케이스의 수로 이어질 수 있습니다.

여기에 일부 매크로 악을 보여주는 링크는 매크로를 사용하는 장점이 특정 예외적 인 경우가 있습니다, 이들은 다음과 같습니다 : 단계 4(c) : 역인용으로 본문을 매개 변수화, 기타. 즉, 역인용을 추가하고 특정 데이터 항목을 매크로 매개 변수로 바꿉습니다. 따라서(+ x y)의 모든 발생은 형태가 됩니다. 견적의 매크로 본문에 남아 있습니다. X3J13은 1989년 3월(정의-매크로-비-TOP-LEVEL)에 투표하여 형태를 정의하는 것이 일반적으로 최상위 수준에 나타나지만 최상위가 아닌 컨텍스트에 배치하는 것이 의미가 있음을 명확히 했습니다. 또한 defmacro는 전역 환경이 아닌 둘러싸는 어휘 환경 내에서 확장함수를 정의해야 합니다. 우리는 “do – while (0)” 루프에 매크로를 동봉했으며, 그 동안 “while (0)”으로 조건을 넣었기 때문에이 루프는 한 번만 실행됩니다. 매크로 함수는 사용자가 Common Lisp의 특수 양식과 매우 유사하여 작동하는 양식을 정의할 수 있는 수단입니다. let 및 cond와 같은 많은 일반적인 Lisp 특수 함수는 람다 및 if와 같은 더 많은 기본 형식이 있다고 가정하여 매크로로 정의할 수 있습니다.

GCC의 식 문을 사용하지 않으면 매크로에서 이 작업을 수행할 수 없습니다. (편집: 쉼표 연산자에도 사용할 수 있습니다… 간과 … 그러나 여전히 읽기가 덜 할 수 있습니다.) 이름은 defmacro 양식의 값으로 반환됩니다. 1단계: 캐릭터 함수가 문자 문자열을 변경하거나 이에 대한 정보를 제공하는 등 실제 작업을 수행하는 함수를 정의합니다.

Comments are closed.