替换#defines常量

时间:2011-03-10 15:13:32

标签: c c-preprocessor

我目前正在开发一个项目(在C中),我们使用#defines作为默认变量。 此变量用于布置电池缓冲柱塞结构。

现在我们有不同的客户,他们有不同的布局。 在过去,我们只会创建一个全新的软件 现在我们正试图摆脱这种碎片并使用相同的代码库。

我们有一个通用库(用于所有项目),它有一组#define s并声明结构。目前我们有一个自定义头文件(包含该项目的#defines),并将它们与常规库中的#define进行比较。如果不同则会引发错误。

我们希望保留自定义头文件,但我正在尝试找到替换常规库中#define的解决方案。一个想法是用某种变量替换它们另一种是使用某种预处理器定义。

过去我们使用ifdef但是代码真的很杂乱而且可怕,所以我们也试图摆脱它。

有人有任何解决方案吗?

2 个答案:

答案 0 :(得分:4)

您可以将所有#define括在

之内
#ifndef HUI
# define HUI 1023
#endif

然后将您想要更改的内容放在使用-DHUI=1033的编译命令行上进行单独编译。

答案 1 :(得分:2)

快速解决方案: 将定义放入单独的头文件中。 在主文件中包含#fidef

的头文件

如果不同标头的数量不超过满手数,这将有效。

另一个解决方案: 像上面这样的分隔头文件,而不是通过ifdef选择包含 将这些定义放入单独的文件夹并制作一个单独的make文件,将该文件夹添加到包含路径中。 - >保持代码干净,但你现在有#customer makefile