如何解决用于替换头文件的预处理器 C 程序
我有家庭作业,我需要编写一个程序来用实际的 .h' 文件(执行预处理器的工作)替换 C 文件的包含命令(假设没有标准库包含)。
我想使用正则表达式匹配,但由于我们只允许使用 ansi-C 的标准库,所以不允许使用正则表达式。
我不确定这样做的有效方法是什么?
编辑:无需检查 #defines
或 #ifdefs
。
解决方法
我建议您按照本指南创建程序:
- 以只读方式打开目标 c 文件。
- 仅以写入方式打开目标文件。
- 创建一个传递输入文件和输出文件的函数,我将调用此函数为“expand_function”。
- 在expand_function中读取输入的每个字节,并在读取每个字符时检查它是否是#,然后测试它是否是包含关键字,最后如果所有条件都匹配打开包含在前面的文件名,然后使用新的输入文件和相同的输出文件再次调用 expand_function(不要忘记关闭所有打开的文件),最后继续循环。如果有任何条件不匹配,则将所有读取的字节写入输出文件。
- 额外:检查您是否没有在 expand_function 开头的包含的死循环中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。