Интересно, как я могу вычеркнуть массив из C в несколько аргументов функции. После того, как я увидел удивительный синтаксический сахар от Go (golang), я думаю об этом.Как передать массив как список аргументов функции с различным количеством параметров в C
С код:
#include <stdio.h>
#include <stdarg.h>
// assert: all args are valid ints
void printEach(int len, ...) {
// Irrelevant, this function print their arguments
// And I know how to use va_start, va_arg...
}
void handleVet(int* v, int n) {
// **HERE is my the question!!!**
printEach(n, v[0]...[n]) // <----------- NON-C code. I need it.
}
int main(void) {
int v[] = {12,14,15,15};
//I can do that only because the vector is static. I know the len when I'm coding
printEach(4, v[0],v[1],v[2],v[3]);
// But if we imagine an arbitrary vector, we got a problem
handleVet(v, 4);
return 0;
}
К примеру, в ходу было бы:
package main
import "fmt"
func printEach (v ...int64) {
// Irrelevant, this function print their arguments
}
func main() {
var arr []int64 = []int64{1,14,15,}
printEach(arr...)
}
Как можно достичь того же эффекта "printEach (обр ...)" в C?
Если вы хотите решение в C не маркируют C++. – Borgleader
Должно ли это быть ** массив **? – Nard
Не знаю. Но он просит var_arg в C или это проще? – dhein