外部リンケージなしで C リンケージを持つ関数を宣言することは可能ですか? コンパイルしようとすると
extern "C" static void f() {}
私は得る
f.cc:1: error: invalid use of 'static' in linkage specification
これはある意味で理にかなっています。ではnamespace { extern "C" void f() {} }
、extern
指定子は匿名名前空間の制限されたスコープをオーバーライドするようです。
これが不可能な場合、関数ポインタを C に渡すときに問題になりますか?