2009.09.20 (Sun)
プログラミングメモ ”define と ワイド文字列”
とあるC++のソースを呼んでいて、わけのわからないものがあった。
#define __T(x) L ## x
「 L ## x 」はどういう意味だろうと思い、ぐぐったら、ワイド文字列の処理を行うものだと判明。
たとえば、「_ _T("abc") 」 は 「 L"abc" 」 に展開されるらしい。
そして、 「L"abc"」 というのはワイド文字列の 「 "abc" 」 という意味らしい。
ワイド文字列なんて完全に忘れてた。
「##」 はダブルクオテーションで囲む、といった意味だろうかね。
[2009/09/21:追記] 「##」の意味は、コメントに詳細有り。
Yahoo知恵袋
#define __T(x) L ## x
「 L ## x 」はどういう意味だろうと思い、ぐぐったら、ワイド文字列の処理を行うものだと判明。
たとえば、「_ _T("abc") 」 は 「 L"abc" 」 に展開されるらしい。
そして、 「L"abc"」 というのはワイド文字列の 「 "abc" 」 という意味らしい。
ワイド文字列なんて完全に忘れてた。
[2009/09/21:追記] 「##」の意味は、コメントに詳細有り。
Yahoo知恵袋
Gasser |
2009.09.21(月) 15:02 | URL |
【コメント編集】
ワイド文字なんて今まで使ったことがない…。
調べてみましたが、##は前後の字句連結だそうです。
ちなみに#が文字列化だそうです
#define __T(x) L##x
__T("aaa") → L"aaa"
#define __T(x) L###x
__T(aaa) → L"aaa"
恐らくこんな感じかと。
調べてみましたが、##は前後の字句連結だそうです。
ちなみに#が文字列化だそうです
#define __T(x) L##x
__T("aaa") → L"aaa"
#define __T(x) L###x
__T(aaa) → L"aaa"
恐らくこんな感じかと。
この記事のトラックバックURL
この記事へのトラックバック
| BLOGTOP |
ワイド文字列なんて、そうは使わないですよね~。
それにしても、「#」と「##」にそんな意味があったとは・・・。
めんどくさくて、推測したまま調べなかったのですが、危うく勘違いしたままになる所でした。
2番目の例が、良い比較対象になってわかりやすいですね。
わざわざ知らせてくれてありがとうございます。