質問
これら二つの機能の定義:
void foo() { }
void foo(void) { }
その他、これらのカット。ない場合は、その void
引数がありますか?美しいのでしょうか。
解決
に C:
void foo()
のように機能foo
を不特定多数の引数の指定なしタイプ"void foo(void)
のように機能foo
取引数のない"
に C++:
void foo()
のように機能foo
取引数のない"void foo(void)
のように機能foo
取引数のない"
書く foo(void)
, こ化を達成し、その両言語で、当社のヘッダーの多言語(がいいものヘッダとして真にクロス語すなわち、ラップそのものではない extern "C"
まだ作成のC++).
他のヒント
私はあなたの質問には差があC++であるが、答えではK&Rのページ72-73:
さらに、関数の宣言を含まない引数として に
double atof();
ることもあることを意図して用いられるものではと想像され 引数のatof;すべてのパラメータのチェックがオフになってしまいます。この特別 の意味は空の引数リストを可能にすることを意図して高齢C プログラムをコンパイルと新規コンパイラでコンパイル.もうで 新しいプログラム.場合、関数は引数の宣言そのものの場合 このように無引数を使用は無効となるものとする。
C++11N3337基準案
ありません。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
附属書C"互換性"C.1.7項8:declarators "と言ってい
8.3.5変更:C++関数の宣言は空のパラメータのリストが行われていない論争することができます。C空 パラメータのリストのグループのリスク-プロファイル関数の引数が不明である。
例:
int f(); // means int f(void) in C ++ // int f( unknown ) in C
【格付理由】これは、誤入力防止の機能(機能との電話番号はお間違えの種類 引数).
効果のオリジナル特集変更の意味や定義の特徴です。この機能は、"obsolescent"C.
8.5.3機能 "と言ってい
4.パラメータ宣言-条項を決定し、引数に指定できるが、その処理が の関数が呼び出されます。[...]パラメータ宣言-条項が空の機能 無論争することができます。パラメータのリスト(ボイド)における空のパラメータ一覧です。
C99
として記述したC++11日 int f()
指定なしの引数がobsolescent.
ではリコードまたはUB.
私は解釈され、C99の標準の詳細: https://stackoverflow.com/a/36292431/895245
C使用を無効と空の機能を参考にコンパイラは、試作、試作は、"引数のない".C++を継続してご利用いただけ伝えて、コンパイラで試作品ができないのなのでしょうかをプロトタイプとしています。