ATa*_*lor 5 c c++ arguments function
好吧,我很确定以前已经以某种方式讨论过这个问题,但我发现它显然太愚蠢了.
第一:我不是在寻找va_list和其他宏.我正在寻找的是主要功能参数.
默认原型,众所周知的是:
int main(int argc, char *argv[]);
Run Code Online (Sandbox Code Playgroud)
现在,我希望我的程序有类似的东西,但不知道究竟是怎么回事.
我们假设我们有这个功能:
void Function(int argc, unsigned short *args[]) {
for(int i = 0; i < argc; ++i) printf("%hu ", args[i]);
}
Run Code Online (Sandbox Code Playgroud)
我想要这样的函数调用:
Function(5, 1, 2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)
那会有用吗?因为我不想要va_list的"混乱",我也不想创建:
void AnotherFunction() {
unsigned short Args[] = { 1, 2, 3, 4, 5 };
Function(5, Args);
}
Run Code Online (Sandbox Code Playgroud)
仅仅因为在这种情况下我只需要一个简单的指针.有人可以指点我正确的方向吗?非常感谢你.
编辑:谢谢大家的宝贵意见.我会满足于'现在不能使用标准的C/C++,并寻找一种不同的方法解决我的问题.
再次,非常感谢你.
g++ 特定解决方案:
const size_t MAX_ARGS = 42;
void Function(int argc, const unsigned short (&args)[MAX_ARGS])
{
}
int main()
{
Function(5, {1,2,3,4,5});
}
Run Code Online (Sandbox Code Playgroud)
如果你实际上不需要该argc参数,你可以编写一个模板:
template<size_t N>
void Function(const unsigned short(&args)[N])
{
// use N
}
Run Code Online (Sandbox Code Playgroud)
这适用于 C++03。该数组必须是 const,否则您无法传递这样的临时初始值设定项列表。如果需要修改函数内的元素,则需要制作副本。
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |