On Feb 17, 2008 10:30 AM, Török Edwin <[EMAIL PROTECTED]> wrote: > From my reading of the C99 standard (N1256.pdf) calling foo with > parameters when it is declared as foo() is allowed only if the > declaration doesn't involve a definition too. > If it involves a definition, then you can't call it with parameters, > and foo() is equivalent to foo(void). Is this correct?
See http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_317.htm. Essentially, executing the call is technically undefined behavior, but it's a perfectly legal construct. I've filed http://llvm.org/bugs/show_bug.cgi?id=2042 on the issue. It looks like your module does actually execute such an undefined call, so the program technically has undefined behavior. That said, I've never heard of a C compiler producing code that actually did anything weird... generally, C calling conventions allow for an arbitrary number of arguments even if the callee doesn't expect them for compatibility reasons. -Eli _______________________________________________ cfe-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
