If you want a variable number of arguments of the same (numerical) type, use an array instead. I would not call it a "workaround". I'd call it the proper way to do it.
If their types are not the same, or if you have a non-numeric type (e.g. string), you can use MathLink to pass arguments to your library function.
Hi,
Not sure whether it answers your question, but if you need tensor-like arguments, then here is how Mathematica does it:
F = Compile[{{n, _Integer,1}},n^2, CompilationTarget -> "C" ]; ExportString[F,"C"]
I.M.