macro

ユニークなシンボルを自動生成

デバッグ用のマクロ等で時々必要となる,ユニークなシンボル名(関数名とか変数名)を自動生成するマクロ #define CAT_I(a,b) a##b #define CAT(a,b) CAT_I(a,b) #define UNIQSYM(tag) CAT(tag, __LINE__) 使い方はこんな感じ int UNIQSYM(hogehoge) = 123; こ…

dereferencing type-punned pointer will break strict-aliasing

dereferencing type-punned pointer will break strict-aliasing の警告を回避する方法.C/C++では,以下のようなType-punned pointerを使うコードは,厳密には動作が保証できない. float f = 123; uint32_t u = *(uint32_t*)&f; このようなコードは,例え…