寻找表生成宏惯用语的良好解释
我想预先澄清这一点:我知道这个技巧是如何工作的,我想要的是一个清晰解释的链接以与其他人分享。
C 的答案之一宏问题谈论“X宏”或“尚未定义的宏”习语。这涉及到定义类似的内容:
#define MAGIC_LIST \
X(name_1, default_1) \
X(name_2, default_2) \
...
然后创建一个具有命名索引的值数组,您可以执行以下操作:
typedef enum {
#define X(name, val) name,
MAGIC_LIST
#undef X
} NamedDefaults;
您可以使用不同的 #define
为 X()
重复该过程创建一个值数组,也许还可以调试字符串等。
我想要一个链接,清楚地解释它是如何工作的,适合那些对C还算熟悉的人。不过,我不知道每个人通常如何称呼这种模式,所以到目前为止,我在网络上搜索它的尝试都失败了。
(如果SO有这样的解释就好了……)
I want to make this clear up front : I know how this trick works, what I want is a link to a clear explanation to share with others.
One of the answers to a C macro question talks about the "X macro" or "not yet defined macro" idiom. This involves defining something like:
#define MAGIC_LIST \
X(name_1, default_1) \
X(name_2, default_2) \
...
Then to create, say, an array of values with named indices you do:
typedef enum {
#define X(name, val) name,
MAGIC_LIST
#undef X
} NamedDefaults;
You can repeat the procedure with a different #define
for X()
to create an array of values, and maybe debugging strings, etc.
I'd like a link to a clear explanation of how this works, pitched at someone who is passably familiar with C. I have no idea what everyone usually calls this pattern, though, so my attempts to search the web for it have failed thus far.
(If there is such an explanation on SO, that'd be fine...)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
关于 C 预处理器的维基百科页面提到了它,但在我看来并不是很清楚:
http://en.wikipedia.org/wiki/C_preprocessor#X-Macros
我为我的团队写了一篇关于它的论文;如果您愿意,请随意使用它。
The Wikipedia page about the C preprocessor mentions it but is not brilliantly clear IMO:
http://en.wikipedia.org/wiki/C_preprocessor#X-Macros
I wrote a paper about it for my group; feel free to use this if you wish.