1. ホーム
  2. c

[解決済み】C言語のvoid引数「void foo(void)」と「void foo()」はどちらが良いのか?) [重複している]。

2022-04-02 22:52:06

質問

<余談
この質問には、すでにここで回答があります :
クローズド 4年前 .

何が良いのか。 void foo() または void foo(void) ? voidだと不格好で整合性がないように見えますが、良いと言われています。これは本当でしょうか?

編集:古いコンパイラで変なことをするものがあるのは知っていますが、GCCだけを使っている場合は void foo() OKですか?ウィル foo(bar); を受け入れるか?

解決方法は?

void foo(void);

これは、C言語では「パラメータなし」と言うのが正しい表現で、C++でも同じように使えます。

しかし

void foo();

CとC++では意味が違う! Cでは、「未知の型のパラメータをいくつでも取ることができる」という意味です。 foo(void) .

可変長引数リスト関数は、本質的に型安全でないため、可能な限り避けるべきです。