将参数传递给方法时内联初始化整数数组
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});
}
在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});
}