jbn@wdl1.UUCP (07/11/84)
s easily processable by user programs), so the ANSI experience with FORTRAN is not relevant. It is also possible to generate better code when the compiler has the argument types at call time (one need not expand chars to ints, for example, an expensive operation on machines with 32-bit ints and 16-bit data paths). C is probably the last language designed which doesn't provide means to check calls against definitions. Correcting this will improve the reliability of C programs greatly. -- Procedures with variable numbers of arguments still are ill-handled. Something akin to the argc/argv mechanism is probably better than allowing ommitted arguments. If we insist that the compiler know when it is calling a procedure with a variable number of arguments, the serious problems involved when the passing of arguments differs by type will be managable. If variable argument functions were called with an arg count and a list of pointers to arguments, one could write "printf" in C and know it would be portable. There is a pointer type issue here, but we could require that everything be passed as the most general pointer type, and that formally the type of the argument vector is an array of unions of all the pointer types involved. This could even be checked at compile time. Other than these items, things look good.