如何在不修改头文件的情况下取消定义应用程序代码中的宏?

时间:2017-09-07 12:18:54

标签: c macros c-preprocessor

我有两件事: 库文件和标题。 我无法访问源文件。我唯一能做的就是将编译好的库用于我的应用程序。为此,我在main.c文件中指定头文件。 让我们说header(application.h)中的代码指定了一个宏TEST,如下所示:

application.h

#define TEST

application.c 文件中,我包含 application.h 标题我有:

#ifdef TEST
{
do this
}
#else
{
do something else
}

现在在我的main.c文件中包含头文件application.h 我不打算使用宏TEST,这意味着我想取消定义它。 显然我可以在application.h文件中取消定义。但我不想这样做。有没有办法在main.c中取消定义宏 像这样:

的main.c

#include"application.h"
#undef TEST

我试过这个,当我运行程序时它不起作用。 有没有办法在不修改application.h文件的情况下实现这个目的?

1 个答案:

答案 0 :(得分:0)

据我了解您的问题,您希望在不触及main.capplication.c的情况下修改application.h

如果application.c包含application.h,那么据我所知,你将无法取消任何东西。 application.cmain.c是不同的编译单元,定义由预处理器在编译单元级别计算。

如果define中存在无条件application.h,那么您将不得不忍受它。