首页 > 解决方案 > 使用包含的文本作为宏参数

问题描述

我正在尝试创建在编译时解析 C 头文件的可能性(并生成一堆要在其他代码中使用的数字常量)。我不需要解析所有的头文件结构,因为我控制了它的内容并且知道这个文件#define里面只有 s。所以我尝试了以下方法:

macro_rules! parse_defines {
    ($(#define $x:ident $v:expr)+) => {$(
        const $x: isize = $v;
    )+};
}

它在我在代码本身中编写#defines 时起作用,但在我使用时不起作用include!,因为include!宏在我的宏之前没有展开,并且它失败并出现“没有规则预期令牌”错误。有什么解决方法吗,还是我必须使用 proc 宏?

标签: rustrust-macros

解决方案


推荐阅读