1

假设我有一个包含一些相关数据结构的头文件 DS.h。

一个

B(重要的是 B 是根据 A 定义的)

假设我想编写另一个文件 Imp.c,它需要 A 而不是 B。有没有办法让 Imp.c 只导入 A 而不是 B?

我想一种解决方案是有两个文件:DSA.h 和 DSB.h;但是,我担心如果 Imp2.c 同时需要数据结构 B 和 Imp.c,那么由于重新定义 A 会出现某种错误。

4

2 回答 2

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

这将停止对函数/变量的任何重新定义。另请参阅此处包含警卫的部分

于 2013-10-02T17:09:42.520 回答
0

您可以在头文件中定义宏并使用 .c 文件设置该宏

#if USE_A
// A structure
#elif USE_B
// B structure
#endif
于 2013-10-02T17:17:10.860 回答