gpt4 book ai didi

C 项目 - 如何管理功能列表?

转载 作者:太空狗 更新时间:2023-10-29 16:06:25 25 4
gpt4 key购买 nike

我有多个功能可以在项目构建时启用或禁用。

当前的实现使用诸如 #define FEATURE_FOO 之类的声明。每当我需要做一些与特定功能相关的事情时,我都会使用预处理器指令,例如 #ifdef

功能定义存储在全局头文件中。

这种方法有两个缺点:

  1. 它要求在每个文件中#include 这个全局 header ,在任何其他 header 之前。
  2. 我无法轻易禁用 C 文件:

这不是很好:

// file: foo.c
#include <stdio.h>

#include "main_header.h"
#ifdef FEATURE_FOO
...
#endif

因为我更喜欢这个:

// file: foo.c
#ifdef FEATURE_FOO

#include <stdio.h>
...
#endif

因此,解决此问题的另一种方法是在构建时声明我的所有功能:

gcc -DFEATURE_FOO -c %< -o %@

我在这里不喜欢的是我需要手动将每个功能传递给我的编译器。

可接受的解决方法是读取包含所有功能的 features.list 文件。在我的 Makefile 中,我将拥有:

DEFINES=$(shell perl -ne 'print "-DFEATURE_$1 " if /(\w+)/' features.list)

%o: %c
gcc $(DEFINES) -c %< -o $@

我能找到什么更好的选择?

最佳答案

您可以使用 gcc 的选项 -include myheader.h

它将 myheader.h 的内容添加到当前翻译单元源的最开头。

关于C 项目 - 如何管理功能列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31657152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com