| **Navigation:**  [[introduction.htm|Language Reference]] > 2 - Program Source Code Format > Prototype Attributes >====== NAME (set prototype's external name) ====== | [[dll set procedure defined externally in dll .htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[private set procedure private to a class or module .htm|{{btn_next_n.gif|Next page}}]] | | || ** ** **NAME(** //constant //**)** {{blk2blue.jpg|blk2blue.jpg}} | **NAME** | Specifies an "external" name for the linker. | | //constant// | A string constant containing the external name to assign. This is case sensitive. | The **NAME** attribute specifies an "external" name for the linker. The NAME attribute may be placed on a PROCEDURE Prototype. The //constant// supplies the external name used by the linker to identify the procedure or function from an external library or to provide a Clarion language prototype with an external name for external linkage (usually to eliminate the compiler's standard name mangling), making it easier to construct an export list for a .DLL to be used in other language projects. **Example:** ** PROGRAM** ** MAP** **  MODULE('External.Obj')** **AddCount PROCEDURE(LONG),LONG,C,****NAME****('_AddCount')  !C function named '_AddCount'** **  END** ** END** **See Also:** [[procedure prototypes.htm|PROCEDURE Prototypes]] [[name mangling and c compatibility.htm|Name Mangling and C++ Compatibility]]