c - 解决多重包含问题

标签 c

我遇到过这样的情况。 我有 main.c 文件,还有另一个 operations.coperations.h 文件。 显然 operations.c 包含 operations.hmain.c 也包含 operations.h

但后来我发现我需要从 operations.c 引用 main.c 中实现的函数。但是,当我将 #include "main.c" 放入 operations.c 时,我遇到了有关多个定义的错误。

你如何处理这种情况?

我在一些代码中遇到过,一个是使用一些方法。他有 "global.h" 文件,其中包含 operations.hmain.h(我必须创建 main.h 手动)。然后从 main.coperations.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/

相关文章:

c - MinGW fprintf (vswprintf) 导致段错误

c - 宏中循环变量的唯一名称

c - GCC 和 Makefile(一个函数的多个声明,即使只有一个?)

java - 在 Java 中,如何从已打开的 C 套接字的文件描述符中获取 Socket 或 DatagramSocket?

c - 如何将混合类型数组转换为 char 数组并返回?

c - 如何将 char[2] 转换为 C 中的 unsigned short?

c++ - C not运算符应用于int?

c - pthread_join 从数组中的函数接收结果

c - C 中的 Boss Worker Pthreads Web 服务器 - 如果发送的请求多于线程数,服务器会崩溃

c - 具有静态 const 成员的动态分配数组