At 12:36 PM 6/28/2002, Ben Laurie wrote:

We really ought to have a better name than NONSTD(), coz I can't remember precisely what it means, and I invented it! However, ISTR its required if you have ... in the args?

"The APR Project: We can't name APIs to save our lives" :-)

It simply means that the caller must pop the args from the stack. That makes
it incompatible (on win32 and possibly elsewhere) with other languages borrowing
that specific function.


Where we have the choice, we have chosen to let the callee pop the args, which
means it must know about the arguments passed.  So you are right, ... always
defeats that convention :)

Letting the callee pop the args means the APR library remains as compatible
as possible for integration into other languages, such as fortran, basic and pascal
(callee popping the stack is sometimes called the pascal convention on win32.)


For Windows this gives us another win. If someone adds another arg without
recompiling the apps, the original symbol (say, [EMAIL PROTECTED]) isn't found, since
the new function has a redecorated name ([EMAIL PROTECTED]). This prevents us from
ever confusing binaries and libs that would cause the software to fault. Instead,
the binary just won't load.


Bill




Reply via email to