我遇到了这个问题。这与宏函数无关,只是简单的字符串值宏替换。
我有两个头文件
test1.h
#define TEST 123
test2.h
#define TEST 456
现在我有一个程序包含这两个标头,但我希望我的实际 TEST 为 123。
如何避免将 TEST 定义为 456?
你可能会认为我疯了,不简单地改变宏,但情况是:我有一个第三方解码器,它有这个宏(在test1.h中定义),并且还有另一个WINAPI宏(在test2.h中定义) )。这两个文件都是被别人控制的;我不应该改变他们中的任何一个。
我根本不需要 test2.h,但我猜它已隐式包含在其他一些 WINAPI 标头中。
那么,有人可以告诉我如何解决这个问题吗?用我的第三方宏覆盖 WINAPI 宏?或者如何在我自己的代码中取消 WINAPI 标头中的定义?有没有办法指定我不想包含哪个标头。
您可以使用#ifdef
预处理器指令来确定是否TEST
已经针对您的特定情况进行了定义。要不就#undef
首先。
#undef TEST
#define TEST 123
把它放在你想要的头文件中TEST
是 123 而不是 456。此外,这需要在test1.h
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)