假设我有一个包含一些相关数据结构的头文件DS.h。
A
B(并且重要的是B以A表示)
假设我想写另一个文件Imp.c,它需要A而不是B.有没有办法让Imp.c导入只有A而不是B?
一种解决方案,我想有两个文件:DSA.h和DSB.h;但是,我担心如果Imp2.c同时需要数据结构B和Imp.c,那么由于重新定义A,会出现某种错误。
答案 0 :(得分:0)
您可以使用预编译器指令
#ifndef _FNAME_H //If the compiler has not yet defined the variable
//_FNAME_H then define the functions in the header, else
//we do nothing
#define _FNAME_H
.... //Put definitions for the header file in here
#endif
这将停止对函数/变量的任何重新定义。另请参阅包含警卫here
的部分答案 1 :(得分:0)
您可以在头文件中定义宏,并使用.c文件
设置该宏#if USE_A
// A structure
#elif USE_B
// B structure
#endif