我有一些宏KEY_*
。我想将它们全部定义为外部变量,但数字和名称可能会有所不同。
file1.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;
可以(以及如何)创建一个元宏/类似的东西,并且不需要使用FOO
/ ASDFG
调用吗?
答案 0 :(得分:1)
您不能仅使用C预处理器。
至少,它需要将KEY_FOO
令牌分解为其组成字符,并且没有预处理器工具可以做到这一点。
使用sed或perl应该很容易,或者你甚至可以编写一个C程序来执行这种转换,但是你不能在预处理器中这样做。