「Void (コンピュータ)」の版間の差分

ナビゲーションに移動 検索に移動
(英語版を見ると、該当部にはAlgol 68とある)
 
== C言語、C++ ==
返り値がvoid型の関数では、引数なし[[return文]]<!--を実行するか、abort、exitなどの関数を呼び出すこと--><!-- ← プログラムごと終了するのであって、関数の終了ではない -->で呼び出し元に戻る(あるいは、プログラムの終了まで戻らないか、longjmpのように別の場所に飛ぶ)<!--C の最新規格 C11 では、これらの操作なく関数が処理の終わりまで達してしまった場合の動作は未定義である。--><!-- ← _Noreturn と勘違いしてないか? -->また、[[関数プロトタイプ]]にvoidを単独で書いて、「[[引数]]がない」ことを明示する用途にも使われる。void(空虚)という名前に反して、void型は空集合を意図したunit型のような使われ方をしている。ただし、<code>void</code>型の値を実際に作り出す方法言語上に存在しない。
 
初期のC言語では、返り値が明示されていない関数が<code>int</code>型として扱われ、また引数のない関数ではただ空のカッコを書いていた。そして、指す先の型が決まらないポインタは整数、あるいは<code>char</code>へのポインタを代用していた。この仕様だった[[コンパイラ]]では、関数の返り値を使わないことで警告が出ていたので、それをvoid型に[[型変換|キャスト]]することで警告を出さないようなコードが書かれることもあった。[[ビャーネ・ストロヴストルップ]]が1979年~80年頃に[[C++]]の開発を始めた時点では、void型やそのポインタは[[AT&T]]系のコンパイラがサポートしていた[[方言 (プログラミング言語)|方言]]であった<ref>http://cm.bell-labs.com/cm/cs/who/dmr/chist.html, "Standardisation."</ref>。
 
型が明示されないとint、という仕様は、C90では規格化された。
 
関数プロトタイプでvoidを明示することと、何も書かないのとでは、以下のようにC言語とC++で意味合いに違いが出てくる<ref>{{cite book | last = Stroustrup | first = Bjarne | title = Programming: Principles and Practice Using C++| publisher = Addison-Wesley | location = Boston | year = 2009 | isbn = 0321543726 | page=996}}</ref>。

案内メニュー