Pragma Export_Procedure (GNAT Reference Manual)

### 2.62 Pragma Export_Procedure ¶

Syntax:

    pragma Export_Procedure (
         [Internal        =>] LOCAL_NAME
      [, [External        =>] EXTERNAL_SYMBOL]
      [, [Parameter_Types =>] PARAMETER_TYPES]
      [, [Mechanism       =>] MECHANISM]);

    EXTERNAL_SYMBOL ::=
      IDENTIFIER
    | static_string_EXPRESSION
    | ""

    PARAMETER_TYPES ::=
      null
    | TYPE_DESIGNATOR {, TYPE_DESIGNATOR}

    TYPE_DESIGNATOR ::=
      subtype_NAME
    | subtype_Name ' Access

    MECHANISM ::=
      MECHANISM_NAME
    | (MECHANISM_ASSOCIATION {, MECHANISM_ASSOCIATION})

    MECHANISM_ASSOCIATION ::=
      [formal_parameter_NAME =>] MECHANISM_NAME

    MECHANISM_NAME ::= Value | Reference

This pragma is identical to `Export_Function` except that it applies to a procedure rather than a function and the parameters `Result_Type` and `Result_Mechanism` are not permitted. GNAT does not require a separate pragma `Export`, but if none is present, `Convention Ada` is assumed, which is usually not what is wanted, so it is usually appropriate to use this pragma in conjunction with a `Export` or `Convention` pragma that specifies the desired foreign convention.

Special treatment is given if the EXTERNAL is an explicit null string or a static string expressions that evaluates to the null string. In this case, no external name is generated. This form still allows the specification of parameter mechanisms.