gpt4 book ai didi

c++ - C 预处理器在字符串文字中插入/追加标记

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

我有以下宏:

#define ASSERT_ITERATOR_VALUE_TYPE(Iterator__, Value_type__)                      \
static_assert(std::is_same<Value_type__, typename Iterator__::value_type>::value, \
"Expected iterator with value type #Value_type__")

在上面的宏中,我试图在作为 static_assert 中的第二个输入参数输入的字符串文字中插入/附加 Value_type__ 标记。

显然,这不是我要实现的目标,因为如果我将宏声明为:

ASSERT_ITERATOR_VALUE_TYPE(std::set<int>::iterator, double);

我会收到消息:

error: static assertion failed: Expected iterator with value type #Value_type__
^^^^^^^^^^^^^

我想把消息传到哪里:

error: static assertion failed: Expected iterator with value type double
^^^^^^

Live Demo

是否有某种预处理器魔法可以帮助我实现我不想要的目标?

最佳答案

#define ASSERT_ITERATOR_VALUE_TYPE(Iterator__, Value_type__)                      \
static_assert(std::is_same<Value_type__, typename Iterator__::value_type>::value, \
"Expected iterator with value type " #Value_type__)

您将宏参数扩展为字符串文字,然后依靠字符串文字连接。

关于c++ - C 预处理器在字符串文字中插入/追加标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40362053/

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