趣味プログラマによるOSS開発日誌

趣味で作っているOSSソフトウェアの紹介や関連技術の紹介、楽曲製作、Webデザイン勉強状況を紹介します。

C++

範囲指定による配列の初期化

C++

前回に引き続き他の人が作成したプログラムを読んでいる時に学んだことを共有します。 今回は配列の初期化に関する話題です。 ※ただしここで紹介するのは、GNU Cの拡張機能です。 配列の初期化(単純に行う場合) C言語で配列を宣言したと同時に初期値を代入…

サイズ0の配列を宣言することの利点

C++

他の人が作成したプログラムを読んでいる時、以下のように構造体の中でサイズ0の配列を宣言しているソースを見かけました。 struct zero_struct { int body[0]; }; 通常であればサイズ0の配列宣言は意味のないものと考えられるのですが、あえて行うというこ…

C++11 ラムダ関数を利用してみる

C++

C++のSTLを使うときに毎回iteratorで回していた部分があって、毎回面倒であった。 そこで今更であるが、C++11で採択されたラムダ関数の使い方/使い道を調べ、少しだけ分かった気がするのでまとめておく。 【ラムダ関数を使う理由】 std::sortやstd::for_each…

UTF-8の文字列を一文字ずつ表示する

C++

C言語でUTF-8を一文字ずつ表示する方法を知りたいと言われ、すぐに答えが出てこなかった。 ネットでUTF-8のフォーマットを調べて、一応UTF-8の文字列を一文字ずつ表示することが出来たので紹介する。具体的なプログラムを示す前に、UTF-8のエンコード方式に…

intとunsigned intのシフト演算の違いについて

C++

自作STGに固定小数点化を採用する時に、C++(C言語)におけるシフト演算で、多少悩んでしまったのでメモしておく。C++のシフト演算では、intで変数を宣言した時と、unsigned intで変数を宣言した時とで振る舞いが異なる。 int型で変数を宣言した時には、符号bi…