Keil Logo

Function Symbols

By default, C251 uses the unmodified function name as symbol reference in the object files. The function names for code which is reentrant, uses C51 parameter passing, or ends with the ERET instruction are modified slightly to avoid run time errors. The following table lists the symbol name generated for the function declaration below:

void TestFunction (char c) ...
Symbol Name
Prefix
Description
TestFunction For standard code generation the function names are not modified.
TestFunction? For code which ends with returns with a ERET instruction a question mark (?) is appended at the symbol name.
TestFunction?_ For reentrant code a (?) and (_) is appended at the symbol name.
TestFunction?? For reentrant code which returns with a ERET instruction two question marks (??) are appended at the symbol name.
TESTFUNCTION For functions with PL/M-51 or C251 parameter passing the function name is converted to uppercase.
_TESTFUNCTION For functions with C51 parameter passing, the function name is converted to uppercase and prefixed with "_" when the function receives parameters in registers.

All symbol names are converted to uppercase letters when the C251 directive NOCASE is applied. Refer to NOCASE for more information.

  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.