У нас есть макрос в заголовочном файле:
#ifdef __cplusplus
#define _crtn "C"
#else
#define _crtn
#endif
Тогда в заголовочных файлах мы можем использовать _crtn
:
#include "croutine.h"
extern _crtn void MyFunction( ... );
Единственное, что нужно сделать, - это убедиться, что вы включили заголовочный файл, содержащий прототип MyFunction, в файл, содержащий реализацию MyFunction, чтобы он был скомпилирован со связью "C".
Это то же самое, что и ответ @ epatel, но требует только уродливых #ifdef
в одном заголовочном файле.