【问题标题】:Replacing #defines constants替换#defines 常量
【发布时间】:2011-07-12 19:29:31
【问题描述】:

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

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

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

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

过去我们使用过ifdefs,但代码非常混乱且难以遵循,因此我们也在努力摆脱这种情况。

有人有解决办法吗?

【问题讨论】:

    标签: c c-preprocessor


    【解决方案1】:

    您可以将所有#define 括起来

    #ifndef HUI
    # define HUI 1023
    #endif
    

    然后将您想为单个编译更改的那些放在编译的命令行上,使用-DHUI=1033

    【讨论】:

      【解决方案2】:

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

      如果不同标题的数量不超过一把,这将起作用。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-06
        • 1970-01-01
        • 2014-06-11
        • 2021-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多