【发布时间】:2018-03-22 00:07:54
【问题描述】:
我正在处理一个大型 C++ 项目。我有一堆在项目子集中使用的宏,但我不想到处导出它们,以避免污染不相关的代码。
现在,我的许多文件看起来像
#include <MyMacros.h> // defines MACRO_1, MACRO_2, ... MACRO_N
// bla
// bla
#undef MACRO_1
#undef MACRO_2
// ...
#undef MACRO_N
当然,这将打破我介绍MACRO_N+1的那一天。
有没有更好的方法来一次取消定义所有这些宏?
【问题讨论】:
-
你不能使用宏——这可以解决问题;或将所有代码放在不需要它们的宏的包含之前。
-
很遗憾,无法同时取消多个宏的定义。
-
你为什么要标记这个C?我不会首先使用宏? C++ 有更好的做事方式
-
所以你在 C++ 中定义宏(有些人会在这里回答“不要”)。您将它们定义在一个标题中,该标题显然被包含在所有地方。但是大多数包含器不想要标题的重要部分。只有一小部分包含器需要宏。为什么你没有两个标题,一个没有宏,一个没有宏,一个只有宏?
-
@UKMonkey 不幸的是,在这种情况下,我什么都做不了。
标签: c++ macros c-preprocessor