The practical limit is common sense. If you have a huge number of arguments to pass, it is best to gather them in a structure or object and pass a single pointer. I can't imagine a function that would need, say, a hundred arguments. That would probably be indicative of a badly designed program.