【问题标题】:Solve Makefile dependencies解决 Makefile 依赖
【发布时间】:2023-03-13 20:22:01
【问题描述】:

如何解决这种依赖关系?

在我的项目中,每个文件都包含同名的头文件。

头文件包括另一个头文件(依赖)。

毕竟我有这个依赖:

parser.h -> lexer.h -> str.h 
parser.h -> tables.h -> bst.h -> str.h 

所以当我在 bst.h 中不包含 str.h 时,我会出现“未知类型名称”错误。

当我包含 str.h 时出现“类型重新定义”错误。

据我了解,这可以通过 Makefile 中的正确依赖关系来解决。

在此之前,我拥有最简单的 Makefile(对象列表,一个命令)。

另外,解决循环依赖最简单的方法是什么?

instructions.h -> bst.h
bst.h -> instructions.h

所以我需要指令原型的数据数据类型,但也需要指向 bst.h 中的指令的指针以获得 goto 指令。

我正在用 C99 编写,在 Makefile 中尝试了很多依赖变化,但没有结果。

提前致谢。

【问题讨论】:

  • 这不是 Makefile 问题,你只需要在你的头文件中include guards

标签: c dependencies header-files circular-dependency


【解决方案1】:

在 str.h 中扩展 Oli 的评论:

#ifndef __STR_H__
#define __STR_H__

/* str.h contents here */

#endif

【讨论】:

  • 并确保在不同的文件中使用不同的名称(__BST_H__ 等)。
  • @creichen 和 Oli:非常感谢!这是非常有用的方法。对项目的所有文件进行了更改,一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 2020-11-12
相关资源
最近更新 更多