C++ はとても複雑だ。新しいことを見つける度に思う。 AIX の C++ コンパイラには -qlanglvl=staticstoreoverlinkage というオプションがある。 具体的に示すと、 extern "C" static void func(void*); は文法的に間違った記述なのだそうだ。 extern "C" { static void func(void*); } が由緒正しき記述なのだそうである。 注意しないと行けない点は、この関数が static なこと。この static が無い、extern "C" void func(void*); は正しい記述だ。 数々の本を漁っても extern "C" に触れているのがあればいい方で、その正しき文法の詳細を記述した本を見たことは無い。