2016-04-16 18 views
-1

私は以下のコードを持つクエリを持っています。以下のコードは、K & R cに従って解釈されますか?コンパイルエラーはなく、コードは正常に動作します。私はコードブロックのビルドオプションにという伝統的なを使用しました。しばらく検索したが、満足のいく答えを得ることができなかった。構文エラーのあるコードとして関数定義のVoid引数で、宣言のプリミティブデータ型です

void func(int); 

int main(void) { 
    func(10); 
    return 0; 
} 

void func(void){ 
} 
+6

'-traditional'はプリプロセッサにのみ影響します。あなたが表示するコードはコンパイルすべきではありません。 – fuz

+3

他の投稿に加えて:K&R-Cコードをもう書き込まないでください。注意:K&R-Cは** ANSI-C aka C89(またはC90、言語に違いはありません)ではありません。 – Olaf

+0

あなたはなぜこのようなことについて考えるべきですか?関数定義と宣言には同じパラメータが必要です。 @ olafのように、K&Rが存在することさえ忘れてしまった。 K&R erataについてgoogleで検索してください。 – Michi

答えて

3

How does the below code gets interpreted as per K&R C?

。 K & R Cはプロトタイプについても知らず、voidというキーワードも(両方ともC89で導入された)、構文エラーです。

C89から始まり、矛盾する宣言は、診断が必要な(エラーのための空白の単語)です。

関連する問題