Stupid and cursed Rust procedural macro that runs a C preprocessor on the input
[dependencies]
cpreprocess = "*"
fn main() {
cpreprocess::cpreprocess!(r#"
#define MACRO(NAME) fn print_ ## NAME () { println!("hello world"); }
MACRO(hello_world)
print_hello_world()
"#)
}
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()
}
}