りてらる!

0
めるぽん.c @melponn

struct char8_t{...}; char8_t u8(const char* s){...} #define u8(s) u8(u8 ## #s) これだ!

2011-04-20 08:53:10
めるぽん.c @melponn

const char8_t* u8(const char* s) { return reinterpret_cast<const char8_t*>(s); } みたいな感じで配列の場合も考慮して変換すれば…

2011-04-20 08:58:41
めるぽん.c @melponn

const char8_t* str = u8(hoge); とかできるようになるのでみんな幸せになるに違いない

2011-04-20 09:01:02
kentn @kentdotn

@melponn リテラルをsjisで書いて「あれ?」とか思うわけですね。

2011-04-20 09:02:22
若年寄(もう若くない) @kikairoya

@melponn これマクロの中で文字列化しないで直接ダブルクォートで括るとなんかまずいんだっけ

2011-04-20 09:04:19
めるぽん.c @melponn

@kentdotn u8はマクロでu8(hoge)を展開するとu8(u8"hoge")になるのでsjisを渡すのはかなり難しいはず…!

2011-04-20 09:05:08
kentn @kentdotn

@melponn おー!理解理解…あれ、使い物になっちゃうかも??

2011-04-20 09:06:41
めるぽん.c @melponn

@kikairoya いえほんとはそうしようと思っていたはずなのですが何故か #s とかやってたので仕方なくなしで書きました…どっちの方がいいのかはよくわからないです!

2011-04-20 09:07:56
若年寄(もう若くない) @kikairoya

@melponn これだとカンマを含む文字列が使えないから特に理由が無いなら直接括ったほうが

2011-04-20 09:08:53
めるぽん.c @melponn

@kikairoya おー、なるほど、確かにそうですね

2011-04-20 09:10:03
にゃははー仙人 @Flast_RO

カンマの問題はvariadic macroを使えば...

2011-04-20 09:10:11
めるぽん.c @melponn

u8"hoge" "fuga" の結合って許可されてるんだっけ…

2011-04-20 09:11:10
にゃははー仙人 @Flast_RO

あーvariadic macroじゃ文字列化ができない?

2011-04-20 09:11:14
若年寄(もう若くない) @kikairoya

@melponn C99ではL"ab" "cd"はL"abcd"になる。C89はダメだったような。C++は知らないけど同じじゃないか

2011-04-20 09:12:13
にゃははー仙人 @Flast_RO

# __VA_ARGS__ で出来るっぽいけどスペースは知らん...

2011-04-20 09:12:49
kentn @kentdotn

ありゃ、残念・・・

2011-04-20 09:13:30
めるぽん.c @melponn

@kikairoya (マクロにとって)便利な時代になりましたね!

2011-04-20 09:15:20
にゃははー仙人 @Flast_RO

ってかC89にwchar_tは無いからL""について考慮できない...

2011-04-20 09:15:29