- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
见于 this site ,代码使用括号中的波浪号显示宏调用:
HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (~))
// ^^^
这是什么意思/做什么?我怀疑这只是一个空洞的论点,但我不确定。它是否可能特定于 C(99),例如 __VA_ARGS__
特定于 C99 并且存在于 C++ 中?
最佳答案
在Boost.Preprocessor的介绍页面上,在A.4.1.1 水平重复
中给出了一个例子#define TINY_print(z, n, data) data
#define TINY_size(z, n, unused) \
template <BOOST_PP_ENUM_PARAMS(n, class T)> \
struct tiny_size< \
BOOST_PP_ENUM_PARAMS(n,T) \
BOOST_PP_COMMA_IF(n) \
BOOST_PP_ENUM( \
BOOST_PP_SUB(TINY_MAX_SIZE,n), TINY_print, none) \
> \
: mpl::int_<n> {};
BOOST_PP_REPEAT(TINY_MAX_SIZE, TINY_size, ~) // Oh! a tilde!
#undef TINY_size
#undef TINY_print
解释如下:
The code generation process is kicked off by calling
BOOST_PP_REPEAT
, a higher-order macro that repeatedly invokes the macro named by its second argument (TINY_size
). The first argument specifies the number of repeated invocations, and the third one can be any data; it is passed on unchanged to the macro being invoked. In this case,TINY_size
doesn't use that data, so the choice to pass~
was arbitrary. [5]
(强调我的)
还有注释:
[5]
~
is not an entirely arbitrary choice. Both@
and$
might have been good choices, except that they are technically not part of the basic character set that C++ implementations are required to support. An identifier like ignored might be subject to macro expansion, leading to unexpected results.
因此,波浪号只是一个占位符,因为需要一个参数,但没有一个参数是必需的。由于任何用户定义的标识符都可以扩展,因此您需要使用其他东西。
原来~
与 +
相比,几乎没有使用(二元否定并不经常被调用)或 -
例如,因此混淆的可能性很小。一旦你确定了这一点,持续使用它会给波浪号赋予一个新的含义;喜欢使用operator<<
和 operator>>
for 流式数据已成为 C++ 习语。
关于c++ - 宏中的波浪号 (~) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478783/
我目前正在开发一个具有模块化设计的网站,其中包含文本模块、图像模块、2 列模块......用户可以根据需要添加/删除/重新排序它们。 每个模块都有一个波浪形/flex 的边框: 有没有可能用css做这
我正在尝试在网站上创建波浪效果 like this其中有一个主色波(深紫色),然后是沿边缘的浅色波。我已尝试使用 CSS position 和 top 定位多个路径,但无法使它们工作。 这是我的基本波
如何在透明图像背景上构建波浪? 布局图像: 我需要白色顶部背景中的波浪。 最佳答案 我稍微改进了 akshay 的回答版本。这包括两个单独的选项。 选项 1 如果不需要保留宽高比,则曲线将随宽度变化。
我是一名优秀的程序员,十分优秀!