タグ

ブックマーク / m-hiyama.hatenablog.com (5)

  • C/C++の思わぬ落とし穴(まーた、ハマっちまったぜ) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    C/C++のとんだ落とし穴(ハマっちまったよ) 上記の記事で、Shift_JIS(CP932)のコメントにまつわるトラブルを紹介しました。あまり時をおかずして、C/C++でまたハマりました。コメント事件ほどの意外性はないにしろ、事情を知らないと対処しにくいトラブルなので顛末を記しておきます。 この記事の内容は、僕が実際に体験した状況そのものではありませんが、それらしい例題を仕立てたので、ストーリーを追いかけてみてください。 内容: 例題:時刻付きのメッセージキュー 実装を変えてみると なんで、こんなことに 誰が悪いのか 例題:時刻付きのメッセージキュー 例題として、次のような機能を持つクラスを考えます。 文字列メッセージを、時刻(タイムスタンプ)を添えてキューで管理する。 クラスのインターフェースを、次のようなヘッダーファイルに記述します。 // msgq.h #ifndef MSGQ_H

    C/C++の思わぬ落とし穴(まーた、ハマっちまったぜ) - 檜山正幸のキマイラ飼育記 (はてなBlog)
    rti7743
    rti7743 2016/05/17
    これもよくある話で、実質予約語みたいなもんだからつかったらダメなわけで。MSから見れば、U16対応を既存ソースに余り手を入れなくもできるようにしたつもりなんだろうけど
  • C/C++のとんだ落とし穴(ハマっちまったよ) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    とあるC++コードがコンパイルエラーするんですが、原因がまったく分からなかったんですよ。「そんなバカな?!」という感じ。しばらくハマってしまいましたよ。 結局、C++でもCでも同じことが起きることが分かりました。次は、僕が遭遇したのと同じ現象が起きるC言語のソースコードです。 // -*- coding: sjis -*- // strange.c struct ThreeNums { int x; // 負の数も指定可能 int y; int z; }; int total(struct ThreeNums nums) { return nums.x + nums.y + nums.z; } コンパイルすると: $ type tdm-gcc tdm-gcc is aliased to `/c/Installed/TDM-GCC-64/bin/gcc.exe' $ tdm-gcc --ve

    C/C++のとんだ落とし穴(ハマっちまったよ) - 檜山正幸のキマイラ飼育記 (はてなBlog)
    rti7743
    rti7743 2016/04/16
    あるある。よくある話だよな。 昔々にこれにハマったからは、クロス開発するソースのコメントには、最後に空白や.を入れることにしているよ。
  • デシリットル問題 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    長男:「おとうさん*1、デシリットルって習った?」 父親:「あー、習ったよ」 長男:「俺も習った。けどさ、デシリットルって見たことないんだよね。おとうさんは使う?」 父親:「リットル、ミリリットル、キロリットルは使うけどなー …」 長男:「デシリットル使う? 見たことある?」 父親:「ウーン、ないな。君よりはるかに長く生きてるけど、小学校の教科書以外で見たことないわ」 長男:「おとうさんも見たことない。じゃ、なんでアレ習うの?」 父親:「アレねぇ、デシリットルねぇー」 長男:「意味ねーじゃん」 父親:「いやまー、すぐに役に立つもんばかりが教育じゃないからね」 長男:「役に立たなくてもいいけどさ、どんな意味があるの?」 父親:「デシリットル教える意味ねぇ、エーと、ウーンと …」 よくわかりません。 *1:オヤジと呼ばれることも最近多い。

    デシリットル問題 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    rti7743
    rti7743 2013/09/06
    cmは普通に元気しているのに、デシリットルは使われることないよね。cmで図面書いて業者に持って行ったらmmでかけよと怒られたぐらいにcmが染み付いているw
  • お絵描きで学ぶ・無限正規ツリーとBNF(バッカス/ナウア形式) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    久々のお絵描き講座です。10枚の絵を描いたぞ(って、落描きみたいなモンですけど)。 有向グラフは計算科学(コンピューティング・サイエンス)で頻出する大事なデータ構造です。コンピュータで扱えるのは有限グラフですが、無限グラフが登場しないのかというと、そうではありません。コンピュータでも、可能性として無限となりうるデータ構造を扱います。とはいえ、何の秩序もない無限データはさすがに扱いにくいので、有限的に定義できる無限構造が興味の対象となります。 ここでは、無限な有向グラフのなかで最もよく使う無限ツリーを考えます。さらに、次の条件を満たすものを例題に使います。 末端のノード(リーフノード)には整数の値が付着している。 中間の分岐ノードは特に値を持たない。 絵を描くときは、末端ノードには単に整数だけを書き、中間ノードは黒丸にします。ルートノードを識別するためには、「ルート」とラベルを書いた矢印を使

    お絵描きで学ぶ・無限正規ツリーとBNF(バッカス/ナウア形式) - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JavaScriptでカリー化。ありがち、つうか実際にあるでしょうね。小ネタと思ってやりはじめたら、意外と混乱した。一種のメタプログラミングのはずだが、実際にはテキスト加工処理。 内容: カリー化ってなに? カリー化を行う関数を作る:準備 カリー化を行う関数を作る:テキストのパッチワーク カリー化を行う関数を作る:組み立て ●カリー化ってなに? 2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること -- ゴチャゴチャ説明するより実例実例: functio sum(x, y) { return x + y; } このsumのカリー化の例: function curried_sum(x) { return function (y) {return sum(x, y);} } curreid_sum関数は1引数で、戻り値として関数

    JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1