I have encountered a working (with XLC8 and MSFT9 compilers) piece of code, containing a C++ file with a function defined with C linkage and a reference argument. This bugs
A reference is an alternate name for an object. Technically, there is nothing in C that could map directly to a C++ reference.
The obvious implementation of a reference is as a (constant) pointer that is dereferenced each time it is used. So, depending on how your compiler implements references, your code might work. But it is not correct.
The solution is to write a C function that receives either a real object or a pointer to that object and call the C++ function from this.