Mail Archives: djgpp/1998/08/18/04:17:20
Gerhard Gruber wrote:
> Destination: Merlin <merlin__ AT geocities DOT com>
> From: Gruber Gerhard
> Group: comp.os.msdos.djgpp
> Date: Mon, 17 Aug 1998 06:32:21 GMT:
>
> >> >well....i suppose it would be silly not to include that one word and risk a mistake
> >> >but...If you passed parameters to the function prototyped without the void...it
> >> >wouldn't screw up the program. It simply would ingnore the parameters wouldn't it?...
> >> >or would it?
> >>
> >> No it would not. In C++ the compiler should issue a warning (or an error?) and
> >> in C it is correctly passed on. If you are calling a function with pascal
> >> convention, though, it would crash because in pascal the called function is
> >> cleaning up the stack.
> >
> >ahh..so if i left out the void and passed a parameter could i use that parameter without
> >without having ever prototyped it?
>
> That's it. Now we got it. :) But that seems to be only the case with C. In C++
> the compiler seems to assume void anyway.
>
> >and what do you mean by pascal convention?
>
> I don't know if DJGPP supports pascal style calling, but in C the arguments
> are pushed on the stack and taken from the stack by the caller. In pascal the
> arguments are pushed on the stack by the caller and removed from the stack by
> the callee. This means that, if you pass the wrong number of parameters (to
> much) to a C function, then nothing happens (if you pass to less then you
> might get problems). If you pass to much arguments to a pascal function then
> the stack is damaged. This is only of interest if you have to interface to
> pascal functions (i.e in windows programming this is needed).
ahhh...so in the end all this could cause a stack overflow..that is assuming it doesn't stop
when you screw the stack up...
L8r,
Merlin.
- Raw text -