C

はじめてのQuineリレー

概要 昨日、自分自身を出力するHaskellプログラムを生成するOCamlプログラムを生成するSchemeプログラムを生成するRubyプログラムを生成するJavaScriptプログラムを生成するCプログラムを書いた。 #include<stdio.h> int main(){char*g="var p=print;p('puts %%^(form</stdio.h>…

Cプリプロセッサマクロ挙動クイズ

C

#define STR(a) #a #define STR_(a) STR(a) #define CONCAT(a,b) a##b #define CONCAT_(a,b) CONCAT(a,b) #define M1(a) STR(CONCAT(a, __LINE__)) #define M2(a) STR_(CONCAT(a, __LINE__)) #define M3(a) STR(CONCAT_(a, __LINE__)) #define M4(a) STR_(CO…

コマンドライン引数パーザのインタフェース

getoptとかって言語(やライブラリ)によってかなり使い方が違っていて,いつも困る.しかも,どれも(慣れるまで)それなりに分かりにくくて,どう書くのがその言語 "らしい" のかよくわからないことが多い.特にOCamlのArg.parseは何故か副作用ばりばりでやり…

マクロでマクロを生成しようとした

C

Cで #define DEFINE_FOO(x) #define FOO x って書いたら怒られた.ぷんぷん!Schemeなら,Schemeなら…