K&R C、ANSI C、C++ にはそれぞれ異なるヘッダーファイルが必要です。C++ ヘッダーファイルを K&R C 標準と ANSI C 標準に準拠する汎用ヘッダーファイルにするには、マクロ __cplusplus を使って、C++ コードと C コードを分離する必要があります。また、マクロ __STDC__ は ANSI C にも C++ にも定義されています。C++ や ANSI C コードを K&R C コードと分離するには、このマクロを使用します。
コードに #ifdef 文を挿入すれば、C++ コンパイラを使って、条件に応じて C か C++ をコンパイルできます。そのためには、__cplusplus マクロを使用します。
#ifdef _ _cplusplus extern "C" int myfunc(int); // C++ 宣言 #else int myfunc(); /* K&R C 宣言 */ #endif
これまでこのマクロは c_plusplus でしたが、現在は使用できません。