cpreprocess

Crates.iocpreprocess
lib.rscpreprocess
version1.0.2
sourcesrc
created_at2022-03-02 22:32:40.834263
updated_at2022-04-07 17:45:06.471428
descriptionProcedural macro that runs a C preprocessor on the input
homepage
repositoryhttps://github.com/WilliamVenner/cpreprocess
max_upload_size
id542575
size9,347
William (WilliamVenner)

documentation

README

crates.io docs.rs license

cpreprocess

Stupid and cursed Rust procedural macro that runs a C preprocessor on the input

Usage

[dependencies]
cpreprocess = "*"

Example

fn main() {
    cpreprocess::cpreprocess!(r#"
        #define MACRO(NAME) fn print_ ## NAME () { println!("hello world"); }

        MACRO(hello_world)

        print_hello_world()
    "#)
}

Nightly

If you're using the Rust nightly compiler, you can use the macro without a string literal. Just enable the nightly Cargo feature for this crate.

I think this is largely experimental, as it relies on a non-100% accurate method of extracting the contents of the macro.

fn main() {
    cpreprocess::cpreprocess! {
        #define MACRO(NAME) fn print_ ## NAME () { println!("hello world"); }

        MACRO(hello_world)

        print_hello_world()
	}
}
Commit count: 7

cargo fmt