HP C/iX Reference Manual (31506-90011)
Chapter 10 177
Using Intrinsics
Intrinsic Pragma
• Inserts "hidden" arguments required to correctly call Pascal routines that have
ANYVAR parameters (size is hidden) or that are EXTENSIBLE (parameter count is
hidden).
If you declare a system intrinsic using an extern declaration rather than an intrinsic
program, and if you do not provide a function prototype, none of the above checks,
conversions, or insertions are done. The address of an intrinsic can be taken, but if a call is
made using a pointer to the intrinsic, the above checks are not performed. The intrinsic
call then degenerates into a normal C function call.
To ensure that all calls are handled correctly by the compiler, the intrinsic pragma should
declare the name of the intrinsic using an identifier with the identical case that is used by
the function calls in the program, especially if the optional user-name is not specified. No
other functions in the program should have the same name as any intrinsic that is
declared, regardless of the case. This is because the actual run time symbol used to call an
intrinsic is not necessarily the same case as the identifier used to declare that intrinsic.
There are a few HP C library routines, such as fopen or fwrite, that have the same names
as intrinsic functions. If you wish to call any of these C library routines that always use
lower case identifiers from a program that also calls the intrinsics with the same name, the
intrinsics must be declared and called using mixed case or upper case identifiers, or by
using the optional user-name.