2014-07-15 2 views
11

나는 다른 녹 프로젝트에서 사용할 수있는 녹의 lib에서 매크로를 만드는 데 어려움을 겪고있다.다른 상자에서 한 상자의 매크로를 사용하는 방법?

다음은 현재이 작품을 어떻게 얻으려고하는지 보여주는 예입니다.

lib.rs :

#![crate_name = "dsp"] 
#![feature(macro_rules, phase)] 
#![phase(syntax)] 

pub mod macros; 

macros.rs :

#![macro_escape] 

#[macro_export] 
macro_rules! macro(...) 

other_project.rs :

#![feature(phase, macro_rules)] 
#![phase(syntax, plugin, link)] extern crate dsp; 

macro!(...) // error: macro undefined: 'macro!' 

올바른 방향으로 가고 있습니까? 참조로 표준 :: 매크로를 사용하려고했지만 많은 운이없는 것 같습니다. 제가 빠진 것이 명백합니까?

+0

디지털 신호 처리 산업을 실제로보고 있습니까? 그렇지 않으면 DSP가 여기에 있습니다. – errordeveloper

+0

@errordeveloper 그래! 특히 오디오의 경우. 아직 초기 단계이고 꽤 뼈가 있지만 콜백 (portaudio 사용)과 'DSP'노드 프레임 워크의 기초가 준비되었습니다. Piston 프로젝트의 일환으로 [여기에서 확인하십시오] (https://github.com/PistonDevelopers/rust-dsp)하실 수 있습니다. 저는 현재 생성 형 음악 엔진에서이 악기를 사용하고 있습니다. 오실레이터/신디사이저의 일부를 기고하고 싶습니다. 또한, 우리는 항상 기여/도움에 열려 있습니다 :-) – mindTree

+0

훌륭한 사운드! 나는 그것을 밖으로 검사 할 것이다 :) 저 @ gmail.com에게 메시지를 떨어 뜨리는 것은 자유롭게 느낀다. 나는 Rust와 함께 NEON과 VFP를 어떻게 활용할 수 있는지에 대해 매우 관심이 많았습니다. – errordeveloper

답변

7

속성에 엉킴이 있습니다. #[…] 다음 항목을 지칭하면서

#![…]외측 범위를 말한다. #![feature(phase)]가 불필요 lib.rs에서

  1. 하고 #![phase(syntax)]은 의미가 : 여기

    몇 가지주의의 것들입니다. other_project.rs에서

  2. , 당신의 phase 속성이 상자에 적용,하지에 extern crate dsp; 품목이 그것에서 어떤 매크로를로드하지 않는 이유입니다. !을 제거하십시오.

+1

많은 시간을 들여서 알아 냈으므로 동일한 문제로 여기에 올 수 있습니다. 둘 다 주석을 넣거나 'main.rs' 또는 crate를 정의 할 때 실제로 매크로를 사용하고자하는 파일의'lib.rs', * not *에 사용하십시오. – skalee

+2

효과를 가지려면'#! [feature]'가 crate는 크레이트 루트 파일을 의미하며, 기본값은'lib.rs' 또는'main.rs'입니다. –

관련 문제