C++

Better C的なC++の使い方

C++をあまり深入りせずにBetter Cとして使うとこうなる。 事前準備:文法面の細かな差異を押さえる 細かいところにC言語とC++の非互換な部分があるので、それを押さえておく。例えば: 標準ライブラリのヘッダファイル名 例えばassert.hではなくcassert。ま…

俺のhcaslがこんなに遅いわけがない

id:eel3:20151102:1446476928 のhcasl、TDM-GCC 4.8.1でビルドしたC言語/C++版バイナリを手元のCygwin(64bit)で実行すると激遅なの。 $ make -f Makefile_mingw g++ -finput-charset=cp932 -Wall -std=c++11 -pedantic hcasl.cpp -o hcasl $ time perl -e…

8つの言語でテキストフィルタを書き比べた

※2015/11/15追記:現段階では8言語から12言語に増えている。その昔 id:eel3:20120129:1327845759 なんてことをやったのだが、性懲りもなくまた同じようなことをやってみた。作ったものはこちらに置いてある。 GitHub - eel3/hcasl: Command line tool for "h…

rand(3)の使い方(C/C++での擬似乱数取得方法)

どうも一部で微妙に盛り上がったらしい。 xcode - c言語での乱数生成 - スタック・オーバーフロー Mac、iOSで、rand()関数の疑似乱数アルゴリズムがヘン! - Qiita なので書いておく。 rand(3)の特徴 CやC++の標準ライブラリにはrand(3)という擬似乱数を生成…

不死身のqDebug

Qtに用意されているデバッグ表示用のマクロ qDebug。こいつはデフォルトではリリースビルドでもデバッグ表示の処理を行う。無効化したいなら、別途 QT_NO_DEBUG_OUTPUT を定義する必要がある。ここまでは、まあ、よくある話だろう。今回つまづいたのは: qDe…

引数をとらない関数の仮引数にvoidを書くべきか、書かざるべきか?

本エントリ名のような質問にたいする回答をよく忘れてしまうので、ここにメモしておく。仮引数にvoidを書く/書かないについては、C言語とC++で言語仕様での扱いが異なる。C言語の場合は、関数の宣言か定義かによっても差異がある。この違いを表にするとこん…

プロトタイプ宣言の仮引数にconst修飾子がなかった話

関数の仮引数(整数型)にて、プロトタイプ宣言にはconst修飾子がついておらず、関数本体にはconst修飾子がついていたとする。この状態でコンパイルしてリンクしてみたらどうなるだろうか? コンパイル/リンク時にエラーになるのか、警告が出るのか、スルー…

ヌルポインタ定数がヌルポインタと解釈されない時──CとC++のヌルポインタ定数をめぐるメモ

これを見て、 リリカル☆Lisp開発日記 » Blog Archive » 恐怖! 64bitと0と可変長引数の組み合わせ 最近は『CプログラミングFAQ』を読む人も少ないのだろうかと思ったのだけど、よく考えればあの本はまた絶版になってるんだよなあ。それに例えばC言語を経ずにC…

構造体の定義のネストで移植性の壁に衝突した話。extern "C" にも限界はあるのさ……。

C90相当のC言語で実装したライブラリがありまして、C++でアプリを作る際にこいつをちょろっと使っちまおうと考えたわけですな。ところがそのライブラリのヘッダファイルにこんな感じの構造体の定義が書かれていたのです。なんてことでしょう。 /* test.h */ …

引数の参照渡し(変数渡し)なのか単なるオブジェクトへの参照なのか、それが問題

プログラミングの勉強をしていると、異なる話題なのに似たような名前が付けられていて混乱することがある。例えば変数における「参照型」と関数/プロシージャ/サブルーチン/メソッド等々の引数における「参照渡し」は異なる概念なのだが、どちらも「参照…

思いつきでライフゲームを実装してみた

何の気の迷いか、それとも魔が差したのか、夜中に思いついてライフゲームを実装するという暴挙*1に出てみた。夜中で頭の働き低下していたので、取りあえず書きなれているC++を使用。本来はC言語の方が書きなれているはずだが、ここ最近C++を弄くっている影響…

時代遅れひとりFizzBuzz祭り C++編

時代遅れひとりFizzBuzz祭り、今回はC++。前回がC言語だったのでその流れでC++、であると同時に、C言語に次いで仕事でよく使う言語だから、という理由もある。C++は苦手だ。機能が多くて且つ複雑怪奇な所が多々あるあたりが苦手だ。しかし機能が多いというこ…

C++入門最前線――21世紀のC++の学び方

もう8年以上たっているというのに、このタイトルは(ryプログラミング初心者のC++の学習方法というと、 まずC言語と共通の機能を学ぶ。 次にクラスとオブジェクト指向プログラミングを学ぶ。 という古典的な方法が有名だけど、正直なところ古典的すぎてあまり…

テキストファイルをソートする

テキストファイルをソートしたくなった時、どうすればよいのだろうか?最近vimのC/C++用辞書ファイルを昇順にソートした。辞書ファイルにはC/C++のキーワードが450個ぐらい書いてある。キーワードは改行で区切られているので、1行に1単語だ。最初に思いつく…