我正在用C语言做一个项目,但我在构建它时遇到了问题。它是:
我的项目中有两个单独的子systemsA和B,它们使用另一个子systemC的功能。要做到这一点,他们#包括必要的头文件。义务是子文件和B都必须单独构建,我的意思是我对子系统有两个单独的‘Makefile’,并且我分别在每个子系统上运行‘systemsA’。
现在,当我尝试将我所有的subsystemsA、B、C合并到一个项目中时,gcc告诉我,一些函数已经声明了,这些函数属于子系统C。
我意识到头文件是在编译时包含的,也就是说,当我在子systemsA和B上使用'make‘时,当我试图联合所有它们时,它们实际上是双重声明的。
有人能帮我解决这个问题吗?任何不需要我同时编译子systemsA和B的解决方案都会很好。
发布于 2009-12-06 20:46:43
您可以使用#ifndef ..来避免双重包含头文件
#ifndef <some name identifying the header file>
#define <some name identifying the header file>
//
//
// header file content will go here
//
//
#endif发布于 2009-12-06 20:48:01
你的C-header文件是只包含声明还是包含实现?
如果它包含实现,那么你应该把它拿出来单独编译。
https://stackoverflow.com/questions/1855290
复制相似问题