トップ «前の日記(2011-02-15) 最新 次の日記(2011-02-17)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

ToDo:


2011-02-16

_ quine.cpp

C++ じゃなくてプリプロセッサの方で書けるか、という話。 単に a って書くだけ、とかはナシでちゃんと一個は # がある必要があるみたいなルールで。

とりあえず C のマクロってヤツは改行を出力できないと思うので、 そのへんで既に僕の中ではできない確定しかけてるんだけど、 まぁ cpp 的には改行も空白もそんな違いないだろう的な話で、 改行が空白になっちゃうのは大目に見ることにする…

となると…と書いたのが

#define Q(x)x Q(x)
Q(#define Q(x)x Q(x))

とか。 これでまぁいいだろーと出力を見てみると、

#define x Q(x)x x Q(x) Q(#define x Q(x)x x Q(x))

とかになってておかしい。 具体的には余計な x がついてる。

そうか2行目の外側の Q() の中の Q() が展開されちゃうんだなーということで、

#define QQ(x,y,z)x##y##z QQ(x,y,z)
QQ(#define Q,Q(x,y,z)x##y##z Q,Q(x,y,z))

まぁこんなとこじゃないでしょうか。 もうちょい短くする方法とかなんとか改行出せないかとかは今度考える

(02:32)

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2011年
2月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28
1.いわさき(2014-05-24 01:54) 2.shinh(2014-05-24 01:54) 3.notogawa(2014-05-24 01:54)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h