Mixing Prototype And Old-Style Declarations - Texas Instruments TI-89 Software Manual

Sierra c assembler
Hide thumbs Also See for TI-89:
Table of Contents

Advertisement

76
The following is an example of an old-style function definition:
The function f5 is defined to accept five arguments and return a value of type int.
The formal parameter type declarations int a, short b, long c, float d, and
double e declare how the parameters will be used inside the function. They do
not describe the types of the actual parameters that are pushed onto the stack at
the function call site. The expected types of the actual parameters are
determined by the integral and floating-point promotion rules. The promotion
rules state that arguments of type char and short are converted to type int, and
that arguments of type float are converted to type double; no other conversions
are performed.
At a function call site, there is no information available on the types of the
arguments. If a called function has a formal parameter declared to be of type
float, it is expecting an actual parameter of type double to have been pushed on
the stack. If, however, the parameter is of type int, it must be explicitly cast to
either a float or a double at the call site to prevent it from being incorrectly
pushed as an int. Finally, if the function is called with too few or too many
parameters, the error will go undetected during compilation.
2.11.1.3.

Mixing Prototype and Old-Style Declarations

The Sierra C compiler supports both new-style (prototype) and old-style
(nonprototype) function declarations and definitions as specified by the ANSI C
standard. However, it is highly recommended that the prototype style be used
exclusively.
Mixing prototype declarations and old-style function definitions should be avoided
because it will often create problems. The following is an example of a prototype
declaration and an old-style function definition:
TI-89 / TI-92 Plus Sierra C Assembler Reference Manual
int f5( a, b, c, d, e )
int a;
short b;
long c;
float d;
double e;
{
/* function body */
}
int func( short a );
int func( a )
short a;
{
/* function body */
}
Not for Distribution
Section 2: Compiler
Beta Version February 2, 2001

Hide quick links:

Advertisement

Table of Contents
loading

This manual is also suitable for:

Ti-92 plusTi-89 plusTi-92 plus

Table of Contents