gpt4 book ai didi

c++ - 将需要逗号的模板传递给单参数宏

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:59 25 4
gpt4 key购买 nike

我有一些代码本质上可以浓缩为

#define FOO(a)
FOO(std::map<int, int>);

但它会发出编译错误(宏 FOO 的实际参数过多)。

显然预处理器认为我已经提供了 std::map<intint>作为参数。

有办法解决这个问题吗?预处理器不会以这种方式处理带引号的字符串。

最佳答案

comma is being treated as a macro argument seperator , 它不会在括号内使用逗号。

如果您使用的是 Boost,他们会提供 BOOST_PP_COMMA :

#include <boost/preprocessor/punctuation/comma.hpp>

#define FOO(a)
FOO(std::map<int BOOST_PP_COMMA int>);

你也可以定义你自己的:

#define COMMA ,
FOO(std::map<int COMMA int>);

关于c++ - 将需要逗号的模板传递给单参数宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32460599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com