C言語で引数なしの関数を書くときに void を書かないのと書くのとで挙動が違うなんて話を聞いたことはないでしょうか? つまり void func() {} と void func(void) {} で挙動が違うという話ですね。 自分も話だけ聞いたことがあったものの2つがどう違うのかはわかっていなかったため、C言語の規格を読みながら何が違うのかを調べてみました。 結果だけ述べると、この2つの書き方は同じように見えて実は明確な違いがあり、引数がない関数を定義/宣言する場合には後者を使うのが適切です。 とは言え、2つの書き方で違いがあるとかほんとかよ?と思う方もいると思うので、まずはこの二つがどう違うのか見ていきましょう。 2つの関数の書き方の違い 早速ですが、以下のプログラムを見てみましょう。 // func_empty.c void func() {} int main(void) { f
ERR06-C. assert() と abort() の終了動作を理解する C言語仕様のセクション 7.2.1.1 は、assert() の動作を次のように規定している [ISO/IEC 9899:2011]。 assert マクロは、プログラム中に診断機能を付け加える。assert マクロは、ボイド式に展開する。assert マクロを実行するとき、expression(スカラ型をもたなければならない。)が偽(すなわち、0と等しい)である場合、assert マクロは、偽の値をもたらした特定の呼出しに関する情報(情報の中には、実引数のテキスト、ソースファイル名、ソース行番号およびその assert マクロの呼び出しを字句的に囲んでいる関数の名前を含む。後の3つはそれぞれ __FILE__ および __LINE__ の値ならびに識別子 __func__) の値とする)を処理系定義の書式で標準
twitterのfriend timelineのログをファイルベースでログとってたら*1、気がつくとarchiveのディレクトリに5万件超のファイルが蓄積されていました。 これだけの件数のファイル群はrmコマンドで一気に消そうとしても、消せません。 -bash-3.00$ rm * -bash: /bin/rm: 引数リストが長すぎますこの引数リストの長さの上限はARG_MAXというマクロ定数で定義されているようです。 -bash-3.00$ getconf ARG_MAX 131072ARG_MAXの制限により、コマンドに渡す引数が(うちの環境では)131072byteを超えてしまうと上記のエラーになってしまいます。この場合は一つのファイルが「786587805」のような名前で保存されている為、5万件超のファイルを指定する「*」のファイルグロブが展開されたファイルリストの文字列が余裕で1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く