マクロ

ラベル付きbreakが欲しい

他の多くの言語には、ラベル付きbreakがあるのに、C++にはない。 マクロで強引に実装してみた。 ついでに制御移行条件、制御移行前実行部も付けてみる。 #define CAT2(X,Y) X##Y #define XCAT(X,Y) X##Y #define CAT(X,Y) CAT2(X,Y) #define BRK CAT(BRK, __…

BEGIN/ENDブロック

昔、AWKにあるBEGIN/ENDブロックが、C++でも使えたら便利かもしれないと思って、 マクロで作ったことを思い出す。 脳内から発掘したものをここに晒しておく。 #define CAT(X,Y) CAT2(X,Y) #define CAT2(X,Y) X##Y #define BEGIN \ static class CAT(Begin_cl…

自分自身を出力するプログラム

#define A(X) B(X) #define B(X) #X #define C "#define A(X) B(X)\n#define B(X) #X\n#define C " #define D main(){puts(C A(C)E A(E)"\nD");} #define E "\n#define D main(){puts(C A(C)E A(E)\"\\nD\");}\n#define E " D 特徴 printfを使っていないので…