]> git.sur5r.net Git - cc65/commitdiff
Calling an undefined function is an error in C99.
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 31 Jul 2008 18:30:33 +0000 (18:30 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 31 Jul 2008 18:30:33 +0000 (18:30 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3857 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/expr.c

index 6ddb685e529865636a4a5ce41eb27543f77a3854..8ce49b765aab97c7daefe2b397d001b74ee137a3 100644 (file)
@@ -31,6 +31,7 @@
 #include "scanner.h"
 #include "shiftexpr.h"
 #include "stackptr.h"
+#include "standard.h"
 #include "stdfunc.h"
 #include "symtab.h"
 #include "typecmp.h"
@@ -688,11 +689,17 @@ static void Primary (ExprDesc* E)
 
                 /* IDENT is either an auto-declared function or an undefined variable. */
                 if (CurTok.Tok == TOK_LPAREN) {
-                    /* Declare a function returning int. For that purpose, prepare a
+                    /* C99 doesn't allow calls to undefined functions, so
+                     * generate an error and otherwise a warning. Declare a
+                     * function returning int. For that purpose, prepare a
                      * function signature for a function having an empty param list
                      * and returning int.
                      */
-                    Warning ("Function call without a prototype");
+                    if (IS_Get (&Standard) >= STD_C99) {
+                        Error ("Call to undefined function `%s'", Ident);
+                    } else {
+                        Warning ("Call to undefined function `%s'", Ident);
+                    }
                     Sym = AddGlobalSym (Ident, GetImplicitFuncType(), SC_EXTERN | SC_REF | SC_FUNC);
                     E->Type  = Sym->Type;
                     E->Flags = E_LOC_GLOBAL | E_RTYPE_RVAL;