C/C++ Programmer's Guide (G06.27+, H06.08+, J06.03+)

unioned.” Two declarations for a function are deemed to agree, with respect to the
attributes, if:
Either both or neither are specified to be _extensible.
Either both or neither are specified to be _variable.
If both have a language-specifier, they must either specify the same language or
one language-specifier must be _unspecified.
They do not result in any illegal combination as is discussed under the following attribute
syntax descriptions.
Table 6 shows the effect of function attributes for each language. “Valid” indicates that the compiler
accepts the attribute. “Ignore” indicates that the compiler accepts but ignores the attribute. “Error
indicates that the compiler issues an error.
Table 6 Effects of Function Attributes
_variable_resident_extensible_aliasNo attributeLanguage
validvalidvalidvalidvalid_c
errorignoreerrorvalidvalid_cobol
errorignoreerrorvalidvalid_fortran
errorignorevalidvalidvalid_pascal
validignorevalidvalidvalid_tal
validignorevalidvalidvalid_unspecified
An attribute can be one of these:
_alias ("external-name")
identifies the name of the external routine being declared and is used for mixed-language
programming. _alias is used at bind-time for TNS C and C++ programs or at link-time for native
C and C++ programs. The external-name argument must be enclosed in parentheses and
quotation marks, as indicated in the syntax. For example:
_alias ("MY^PROC")
Use _alias to describe the name of an external routine written in COBOL, FORTRAN, D-series
Pascal, or TAL that does not have a valid C name. The external-name argument is neither
modified (for example, upshifted) in any manner, nor checked to verify that it is a valid identifier
for the language of the external routine.
Considerations for both the native and TNS compilers:
A function pointer is not allowed to have an _alias attribute.
The external-name argument cannot be introduced into the program’s namespace.
For C++, member functions, function templates and overloaded functions are not allowed
to have an _alias attribute.
_extensible [ ( param-count ) ]
directs the compiler to treat all parameters of the function as though they were optional, even
if some parameters are required by your code. You can add new formal parameters to an
_extensible function without recompiling callers unless the callers use the new parameter.
Declarations 57