gpt4 book ai didi

c++ - 如何防止自己忘记包含我的 "config.h"?

转载 作者:搜寻专家 更新时间:2023-10-31 00:02:24 24 4
gpt4 key购买 nike

我在我的项目中使用全局“config.h”来定义启用/禁用功能的各种标志。我使用约定定义:

#define ENABLE_FEATURE1    0 // feature is disabled
#define ENABLE_FEATURE2 1 // feature is enabled

然后在我为它们测试的源文件中:

#if ENABLE_FEATURE1
// do something
#endif
#if ENABLE_FEATURE2
// do something
#endif

但是,有几次我忘记在测试这些标志的 cpp 文件中包含“config.h”。然后我没有从预处理器那里得到任何错误或警告,并且程序构建正常,但是编译器将所有未定义的标志视为好像它们设置为零一样,因此该功能在该 cpp 文件中被视为禁用,而它被视为在其余的源文件中启用。

有时,即使在运行时,后果也不会立即显现。

最佳答案

在源文件中插入以下#if

#if !defined(ENABLE_FEATURE1) && !defined(ENABLE_FEATURE2)
#error "Please include <config.h>"
#endif

那么,你可能会遇到另一个问题:如果我忘记插入上面的#ifdef怎么办? :)

在这种情况下,您可以将 config.h 包含在预编译头文件中(例如,stdafx.h)并启用使用预编译头文件。如果文件不包含 stdafx.h,MSVC 将引发错误。

最后,您可以编写一个简单的脚本来检查每个源代码是否都有config.h

关于c++ - 如何防止自己忘记包含我的 "config.h"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139666/

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