반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- BFS
- 타입스크립트
- Node.js
- Nestjs
- Algorithm
- 크롤링
- javascript
- ip
- 쉬운 문제
- 그래프
- socket
- Crawling
- HTTP
- 프로그래머스
- typescript
- TCP
- 타입 챌린지
- 문자열
- HTTP 완벽 가이드
- type challenge
- 자바스크립트
- 알고리즘
- 백준
- 프로그래머스 레벨 2
- 소켓
- dp
- 수학
- dfs
- 가천대
- 레벨 1
Archives
- Today
- Total
kakasoo
3. 러스트 매크로 본문
반응형
// main.rs
fn main() {
println!("Hello, world!");
}
함수의 호출은 위와 같이 작성해서, 다른 프로그래밍 언어와 다르지 않다.
앞서 ‘println!’을 따로 설명하지 않고 넘어갔는데 이는 함수가 아니라 러스트에서는 매크로라고 부르는 대상이다.
매크로는 메타 프로그래밍의 줄임말로 더 많은 코드를 작성하는 코드 작성의 한 가지 방법이라고 한다.
함수 시그니처는 이 함수가 받는 매개변수와 타입 ( = 데이터 유형 )을 반드시 명시해야 하는데,
매크로는 매번 다른 개수의 매개변수와 타입을 받을 수 있도록 작성하는 것이다.
단점은 매크로를 정의하는 게 함수보다 더 복잡하다는 점이 있지만 범용적으로 사용가능한 좋은 기능이다.
fn main () {
println!("Number: {}, String: {}", 100, "abcd"); // 중괄호를 만날 때마다 뒤에서 받은 매개변수로 치환된다.
}
이런 활용은 일반적인 함수 코드에서는 사용이 불가능할 텐데,
더 많은 러스트 코드 확장을 알고 싶다면 cargo-expand를 설치하여 다루면 된다.
$ cargo install cargo-expand # 아직 cargo-expand를 설치하지 않았을 경우
$ cargo expand
여기서 말하는 확장 (expand) 은 매크로 코드가 실제로 어떻게 번역되는지를 의미한다.
#![feature(prelude_import)]
#[prelude_import]
use std::prelude::rust_2021::*;
#[macro_use]
extern crate std;
fn main() {
{
::std::io::_print(format_args!("Number: {0}, String: {1}\\n", 100, "abcd"));
};
}
위는 실제로 expand 명령어를 사용한 결과이다.
반응형
'프로그래밍 > Rust' 카테고리의 다른 글
6. 소유권 (Ownership) (0) | 2024.03.30 |
---|---|
5. 러스트 프로그래밍 시작 - 사용자 입력 받기 (1) | 2024.03.24 |
4. 러스트 프로그래밍 시작 - 함수 작성하기 (0) | 2024.03.24 |
2. vscode에서 러스트 디버깅 하는 법 (0) | 2024.03.24 |
1. 러스트 학습 시작 전 기본 개념들 정리 (1) | 2024.03.24 |