ヘッダーファイルの一部が extern "C" されてない

HP-UX 上で動いている C 言語プログラムの一部を C++ 言語に移植しているうち setcontext/getcontext がシンボルが見つからないとリンクエラーになるのに気づいた。どうも ucontext.h の中で C++ 用の extern ブロックが行われていないようだ。

以下のように自分で extern "C" を追加する必要がある。


#ifdef __cplusplus
extern "C" {
#endif

#include

#ifdef __cplusplus
};
#endif

マニュアルには注意書きが載っていない。
ANSI C で定義されているヘッダーファイルはそんなことはないようだが、HP-UX で微妙な標準のヘッダーファイルを .cpp ファイルに取り込むには注意が必要のようだ。