How to detect if C code (which needs 'extern C') is compiled in C++

The common practice is not to demand client code wraps your header in extern "C", but to do so conditionally yourself. For instance:

#ifdef __cplusplus
extern "C" {
#endif

  // Header content

#ifdef __cplusplus
}
#endif

That way client code is automatically correct without doing anything beyond including the header.