Calling between C/C++ and XC

In certain cases, it is possible to pass arguments of one type in XC to function parameters that have different types in C/C++, and vice versa.

To help simplify the task of declaring common functions between C/C++ and XC, the system header file xccompat.h contains various type definitions and macro defines. See the header file for documentation.

Passing arguments from XC to C/C++

A function defined in C/C++ with a parameter of type unsigned int can be declared in XC as taking a parameter of type port, chanend or timer.

A function defined in C/C++ with a parameter of type “pointer to T” can be declared in XC as taking a parameter of type “reference to T” or “nullable reference to T.”

A function defined in C/C++ with a parameter of type “pointer to T” can be declared in XC as taking a parameter of type “array of T.”

Passing arguments from C/C++ to XC

A function defined in XC with a parameter of type port, chanend or timer can be declared in C/C++ as taking a parameter of type unsigned int.

A function defined in XC with a parameter of type “reference to T” or “nullable reference to T” can be declared in C/C++ as taking a parameter of type “pointer to T.”

A function defined in XC with a parameter of type “array of T” can be declared in C/C++ as taking a parameter of type “pointer to type T.” In this case, the xCORE linker inserts code to add an implicit array bound parameter equal to the maximum value of the unsigned int type.