重複の可能性:
C ソース ファイルが C++ コードとしてコンパイルされているかどうかを (プリプロセッサ経由で) チェックする方法
ヘッダー ファイルが C または C++ としてコンパイルされているかどうかをテストする標準マクロを見つけようとしています。これの目的は、ヘッダーが C または C++ コードのいずれかによってインクルードされる可能性があり、どちらに応じてわずかに異なる動作をする必要があるかということです。具体的には:
C では、これをコードにする必要があります。
extern size_t insert (const char*);
C++ では、これをコードにする必要があります。
extern "C" size_t insert (const char*);
さらに、ヘッダー内のすべての宣言の周りに #ifdef を配置しないようにする方法はありますか?