我遇到过这样的情况。
我有 main.c
文件,还有另一个 operations.c
和 operations.h
文件。
显然 operations.c
包含 operations.h
,
main.c
也包含 operations.h
。
但后来我发现我需要从 operations.c
引用 main.c
中实现的函数。但是,当我将 #include "main.c"
放入 operations.c
时,我遇到了有关多个定义的错误。
你如何处理这种情况?
我在一些代码中遇到过,一个是使用一些方法。他有 "global.h"
文件,其中包含 operations.h
和 main.h
(我必须创建 main.h
手动)。然后从 main.c
和 operations.c
中,您只需包含 global.h
。我认为这样可以消除多个定义错误。您怎么看 - 这是解决我上面提到的问题的方法之一吗?
最佳答案
这是一种方式,是的。
另一种当然是把main.c
中除main()
以外的函数去掉,放在一个单独的模块中,有自己的实现(.c
) 和头文件 (.h
)。
使用防止多重包含的保护通常也是一个好主意,即在每个 header 的顶部,执行如下操作:
#if !defined FOO_H_
#define FOO_H_
然后在底部,在所有声明等之后,有:
#endif /* FOO_H_ */
当然,FOO_H_
应该是实际的文件名,即 operations.h
文件中的 OPERATIONS_H_
等等。
关于c - 解决多重包含问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19707108/