【发布时间】:2016-01-13 00:44:01
【问题描述】:
考虑一个(只读的第三方)标头lib.h:
#define XYZ 42
在源文件中,我想将单词XYZ 用于不相关的目的,并且不希望用42 进行替换。但是,在同一个源文件中,出于其他目的,我也确实想从 lib.h 访问值 42 而不对其进行硬编码。如何将宏从XYZ重命名为LIB_XYZ?
以下内容不起作用,因为预处理器在进行 LIB_XYZ 替换时需要 XYZ,但 XYZ 尚未定义:
#include "lib.h"
#define LIB_XYZ XYZ
#undef XYZ
有没有办法诱使预处理器在XYZ 丢失之前将LIB_XYZ 扩展为最终值?
【问题讨论】:
-
我认为你被卡住了,如果你想从第三方头文件中获取 LIB_XYZ 的定义,并且除了 C 编译器之外不想使用任何东西。如果我必须这样做,我可能会编写一个脚本来将 lib.h 转换为 our_lib.h,并修改选定的#define,使我的代码包含 our_lib.h,并使用一个 makefile 来使正确的事情发生,如果 lib .h 改变了。
-
也许this 可以提供帮助。