将参数传递给方法时内联初始化整数数组

initialize integer array inline when passing arguments to a method

在c++(avr-g++)中调用方法时是否可以内联初始化整数数组?

这是我试过的:

A({2, 4, 8, 3, 6});

void A(int* b) {

}

我得到了这个错误:

cannot convert '' to 'int*' for argument '1' to 'void A(int*)' cannot convert '' to 'int*' for argument '1' to 'void A(int*)'

不适用于原始指针。但是你可以用 C++11 中的 std::vector 来做到这一点:

void A(std::vector<int> b) {

}

A({2, 4, 8, 3, 6}); // b.size() == 5

或者只是一个推导出数组大小的函数模板:

template <size_t N>
void A(const int (&b)[N]) {
}

看着我的老问题,我发现我现在真的知道这个问题的答案了。这里是:

void A(int *b) {

}

void foo() {
    A((int[]){1,2,3});
}