(수정중)
Rust에서 매크로는 다른 코드를 작성할 수 있게 하는 코드를 말한다. 함수랑은 다르게 뒤에 !
를 붙인다.
다른 점이 이것밖에 없나?
macro_rules!
라는 매크로로 만들어진다.(매크로를 통해 매크로를 만든다..)패턴 일치에서 나오는 match랑 비슷하다. 대표적인 예로 println!
이 있다.AST, 다른말로 "Abstract Syntax Tree" 혹는 "Syntax Tree" 라고 불리는 이 Tree는 프로그래밍 언어로 쓰여진 소스코드의 abstract syntactic 구조를 표현하기 위해서 사용됩니다. 쉽게 말하자면 특정 프로그래밍 언어로 작성된 프로그램 소스 코드를 각각 의미별로 분리하여 컴퓨터가 이해할 수 있는 구조로 변경시킨 트리를 의미합니다.
출처: https://code-giraffe.tistory.com/44 [기린의 공부 블로그:티스토리]
// macro_rules!를 통해 매크로 선언
macro_rules! add{
// 소괄호로 인자를 받는다
($a:expr,$b:expr)=>{
{
println!("{}", $a+$b);
}
}
}
fn main(){
// 마지막에 느낌표를 사용한다
add!(1,2);
}
macro_rules! add_as{
// using a ty token type for macthing datatypes passed to maccro
($a:expr,$b:expr,$typ:ty)=>{
$a as $typ + $b as $typ
}
}
fn main(){
println!("{}",add_as!(0,2,u8));
}
이거 책도 매크로 공부할 때 좋더라구요!
https://danielkeep.github.io/tlborm/book/README.html
https://veykril.github.io/tlborm/introduction.html