假设我有一个包含一些相关数据结构的头文件 DS.h。
一个
B(重要的是 B 是根据 A 定义的)
假设我想编写另一个文件 Imp.c,它需要 A 而不是 B。有没有办法让 Imp.c 只导入 A 而不是 B?
我想一种解决方案是有两个文件:DSA.h 和 DSB.h;但是,我担心如果 Imp2.c 同时需要数据结构 B 和 Imp.c,那么由于重新定义 A 会出现某种错误。
您可以使用预编译器指令
#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
这将停止对函数/变量的任何重新定义。另请参阅此处包含警卫的部分
您可以在头文件中定义宏并使用 .c 文件设置该宏
#if USE_A
// A structure
#elif USE_B
// B structure
#endif