C++具有可变参数数量的宏
C++ macro with a variable number of arguments
我想知道如何创建一个 c++ 宏,该宏将在给定数量的参数之间生成 或,例如
#define aMacro(arg1,arg2,arg3,arg4) arg1==arg2 || arg1==arg3 || arg1==arg4
但有可变数量的参数。
我知道 varadic 宏,我知道它们存在,我知道在 SO 上有一些关于它的问题,但据我所知,它们都没有解决我关于如何做 || 部分的问题。
谢谢
从维基百科中,您正在寻找的是一个可变参数宏:
可变参数宏是某些计算机编程语言的一个特性, 特别是 C 预处理器,其中可以将宏声明为 接受不同数量的参数。
变量参数宏于 1999 年在 ISO/IEC 中引入 9899:1999(C99)修订的C语言标准,并于2011年在 ISO/IEC 14882:2011 (C++11) 修订版C++语言标准。
因此,它可以在 C++11 或 C99 中使用。它在某些编译器上也可以作为扩展使用,例如GNU GCC支持它,我想我也读过VC++。
然后对于语法,例如看看这篇文章,它给出了一个简单的例子:
#define FOO(fmt, ...) printf(fmt, ##__VA_ARGS__)
希望你对这里可能你不知道的宏的优越替代方案持开放态度。 这使用可变参数模板,这需要 C++11。但是如果你想要可变参数宏,那也需要C++11。
template<typename T>
bool func(T const&)
{
return false;
}
template<typename L, typename R, typename... Args>
bool func(L const& lhs, R const &rhs, Args const&... args)
{
return (lhs == rhs) || func(lhs,args...);
}
相关文章:
- 数数并选择 sqlite 中的前三名
- C++:是否可以编写一个函数,将不同类型的元素附加到变体数组中?
- 通过参考变差函数传递N-D数组
- 数数并说在C++中使用递归
- C++ 通过引用函数传递数组,但内容保持不变
- 具有空构造函数使数组未初始化会使计算速度变慢
- 如何将全局字符变量值分配给数组?
- 我在代码中收到一个运行时错误,该错误如何通过修改最多一个元素来查找数组是否可以变得不减少
- 数独百变需要帮助
- 如何替换QT QML中的变体数组文本
- 字符串的变体数组包含替代空间
- 不同的计数器,同一数组.数组元素不变.C
- 将变参数包中的值加载到临时数组中
- char数组变长会导致意外值
- 排列 +ve 和 -ve 编号的数组,顺序不变
- 如何将小数数组转换为二进制数数组
- 数组元素的值保持不变
- 合并排序变体:使用链接数组
- 传递引用以修改数组之后,为什么它保持不变
- 返回对大小不变的指针数组的引用的最佳方式是什么