【问题标题】:Missing header file, <tools/debug.h> for ANSI C?缺少 ANSI C 的头文件 <tools/debug.h>?
【发布时间】:2019-01-08 08:53:23
【问题描述】:

希望你一切顺利。 当我在阅读 Allen I. Holub 的《Compiler Design In C》一书时,遇到了在示例程序中实现的这些头文件:

#include <tools/debug.h>
#include <tools.h> /* Needed only for prototype

我的编译器说不存在这样的文件或目录(Dev-C++)。我已经将编译器设置为ANSI-C,看看作者如何使用ANSI-C编写代码,但无济于事。

该程序还包含一个PRIVATE关键字,从C99改为ANSI-C后,编译器仍报告为未知关键字。

谁能帮我解决这个问题?抱歉,如果以前有人问过这个问题,但我在任何地方都找不到对此的参考。我还在这里包含了代码的图片。

如果我应该弃权,或者我无法访问这些文件,我还有哪些其他选择?我真的很想完成这个项目。

提前感谢您花时间和耐心阅读所有内容。

【问题讨论】:

  • 这些标题很可能在本书的某处介绍过。可能在随书附送的 CD 上(如果有的话),或者在附录或介绍章节的某个地方。
  • 显然没有。我检查了附录,但找不到头文件。如果他们是作者,他为什么要使用作为头文件而不是简单的“”样式的头文件,这似乎是显而易见的选择。
  • Ruslan 的答案是正确的。关于使用PRIVATE 的第二个问题在这里得到解答:https://stackoverflow.com/questions/623219/is-private-a-c-keyword。如果您查看本书的附加材料(例如compiler.design.in.c/compiler/INCLUDE/TOOLS/DEBUG.H,l. 11),您会看到链接中已接受问题的答案中提到的#define
  • @SaifUlIslam 使用&lt;...&gt; 包含用户创建的头文件是一种常见的方法,方法是指定一个额外的包含路径,例如,通过在clang 或gcc 中使用-I 标志。另见https://docs.microsoft.com/cpp/build/reference/i-additional-include-directories?view=vs-2017
  • 所有那些讨厌的宏都不是很好的编程习惯。此外,使用像#define PRIVATE static 这样的东西是很值得怀疑的,这不是你在C 中进行适当私有封装的方式。对于小型微控制器应用程序来说很好,但对于托管系统编程来说几乎没有。关于“Microsoft 的 C 编译器 memcpy 不支持重叠字符串”的评论被延迟 - no compiler 支持带有重叠字符串的 memcpy,这是 C 标准未定义的行为。我不认为这是一本你应该学习的书。

标签: c private ansi-c compiler-construction


【解决方案1】:

标题是补充材料。可从作者网页下载:https://holub.com/compiler/

这本书本身一定在介绍性章节的某个地方提到了这一点。

【讨论】:

    【解决方案2】:

    是的,我可以帮忙。当这本书刚出版时,我在新泽西州巴斯金岭的 Dunn 和 Bradstreet 签订了一份庞大的数据存储库合同,在专业工作中使用了这些工具。它是同类工具中唯一的一套工具,可见解析器特别强大,整体而言,自上而下和自下而上的解析以及完整的注释源使其成为同类工具中的唯一工具。看到可能不是天生就有它的人出来尝试使用它,这很有趣。

    现在无需移植即可使用它的快速且确实唯一的方法是在 DOS 模拟器中运行,我已经验证它可以正常工作,但你确实需要一个完整的工作构建环境,除非你只想使用可见解析器来验证我正在考虑做的语法。

    要真正使用,您需要将它移植到真正的诅咒中,而不依赖于它现在所依赖的 bios 东西,或者只在我上面所说的 dos 容器中使用。

    在 D&B 合同中,我使用它来构建解析器,以读取其 COBOL 遗留程序(1991 年遗留)的工作存储部分来填充存储库。

    我过去打算做这个移植,已经联系了 Holub 和 iirc,他说没关系,他对此没有任何问题,但他自己没有做任何事情。到目前为止,我看到的所有副本都是 90 年代中期的相同东西,除了在模拟器上之外,没有端口也可以工作。

    【讨论】:

    • 另外,不,在包含 Holubs 网站所有内容的各种副本中,没有任何遗漏。 '03 注释中的书面更改是微不足道的,包中除了 ofc DOS 之外什么都没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多