替换#define常量

4

我目前正在开发一项C语言项目,我们使用#define来设置默认变量。这些变量用于布置电池缓冲RAM结构。

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

我们有一个通用库(在所有项目中都使用),其中包含一组#define和声明的结构。目前,我们有一个自定义头文件(其中包含该项目的#defines),并将其与通用库中的#define进行比较。如果不同,就会抛出错误。

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

过去,我们使用了ifdef,但代码真的很混乱,难以理解,因此我们也试图避免使用它。

有人有什么解决方案吗?

2个回答

4
您可以将所有的#define用括号括起来。
#ifndef HUI
# define HUI 1023
#endif

然后,将您想要在单独编译时更改的内容放置在编译命令行中,使用-DHUI=1033


2

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

如果不同的头文件数量不超过一把手,这个方法是行得通的。

另一个解决方案: 像上面一样分开头文件,但是不是通过 ifdef 选择包含的文件 而是将定义放入单独的文件夹中,并创建一个单独的 makefile,在其中将该文件夹添加到 include 路径中。 -> 保持代码整洁,但你现在需要#定制makefiles


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接