次のコードがあります。
typedef void VOID;
int f(void);
int g(VOID);
これは C で問題なくコンパイルされます (Fedora 10 で gcc 4.3.2 を使用)。C++ としてコンパイルされた同じコードで、次のエラーが発生します。
void.c:3: error: ‘<anonymous>’ has incomplete type
void.c:3: error: invalid use of ‘VOID’
さて、これは外部ライブラリにあるもので、所有者にその問題を修正してもらいたいと思います。そこで質問があります - C++ 標準はこの構成を禁止していますか? ポインタ/引用を教えていただけますか?私が覚えている唯一のことは、空のパラメーター リストを通知する (void) を使用した関数宣言が C++ では推奨されていないことですが、typedefed VOID が機能しない理由がわかりません。