繁体   English   中英

C如何将大型定义列表转换​​为字符串,以便与用户输入字符串进行比较

[英]C how to convert large list of defines to strings for comparison to user input string

我读了一个有趣的答案,关于如何使用巨型switch语句将错误代码列表从错误代码转换为错误字符串。 我有一个稍微不同的问题。

给定一个包含数千个寄存器定义的大型文本文件,即:

#define setup_register 0x01

我希望能够从命令行获取输入,如write setup_register 0xFF 然后在我的代码中,我将查找setup_register的地址(0x01)并写入它。

是否有C方式获取setup_register地址? 我想我可以解析文件并创建一个新文件,或者手动完成,但这意味着它必须在每次更改时完成。

setup_register是C预处理器符号。 如果它是宏参数 ,则可以对这些符号进行字符串化。 否则,据我所知,它无法完成。

我会用你最喜欢的脚本语言(Ruby,Python,Perl)编写一个脚本,它寻找“#define [A-Za-Z _] + 0x [0-9a-fA-f] +”形式的行,然后解析名称并生成具有字符串和相应值的结构数组。 散列字符串,将结构放在哈希表中,你就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM