0

我有一些宏KEY_*。我想将它们全部定义为外部变量,但数量和名称可能会有所不同。

文件1.h:

#define KEY_FOO 200
...
#define KEY_ASDFG 423

预处理器后的file2.c:

#include <file1.h>
// Something like this should be generated by macros or so, but should not hardcode the names (except KEY_)
extern int key_foo; int key_foo = 200;
...
extern int key_asdfg; int key_asdfg = 423;

我可以(以及如何)制作一个像这样工作并且不需要使用 / 调用的元宏/东西FOOASDFG

4

1 回答 1

1

您不能仅使用 C 预处理器来执行此操作。

至少,它需要将KEY_FOO标记分解为其组成字符,并且没有预处理器工具可以做到这一点。

用 sed 或 perl 应该很容易做到,或者你甚至可以编写一个 C 程序来执行这种转换,但你不能在预处理器中做到这一点。

于 2013-02-23T20:38:14.600 回答