C++

マクロ関数の引数から括弧を除く

【環境】Visual Studio.NET 2003/ WindowsXP Pro. マクロ関数はプリプロセッサメタプログラミングをするにおいて欠かせないものですがその名の通りコンパイルプロセス前に処理を行うため困る場面もあります。次の例を見てみます。 #define SOME_MACRO( x ) /…

配置構文delete

【環境】Visual Studio.NET 2003/ WindowsXP Pro. 成書を読み返しているとふと疑問に思う単語を見かけた。「配置構文delete」である。配置構文newといえば自分で取得したメモリにオブジェクトを配置する構文です。 //一般的宣言 void *operator new( std::si…

long longに対する算術変換

【環境】Visual Studio.NET 2003/ WindowsXP Pro. まず二項演算における算術変換についてMSDNから日本語訳、適当に改訂。 演算数Aの型 演算数Bの型 変換 long double any Bをlong doubleに変換 double any Bをdoubleに変換 float any Bをfloatに変換 (*) uns…

C++のビットフィールド

【環境】Visual Studio.NET 2003/ WindowsXP Pro. Cでビットフィールドに使える宣言子ははunsigned int, signed int, intのみですが、どうもC++では整数型に拡張されているようです。ということはcharやshort、果てはlong long*1までも使えるということです…

RVO,NRVOのテスト

【環境】Visual Studio.NET 2003/ WindowsXP Pro. 折角やったので自分のためにもネタにしやすい部分を記録として残しておきます。RVO(Return Value Optimization)とは値渡しでオブジェクトを返す関数において関数内で生成され計算される一時オブジェクトを生…