ページ 11

[VC++] #defineとLプレフィックスを同時に使いたい

Posted: 2015年8月16日(日) 01:06
by びす
お世話になっております。
#defineによるマクロとLプレフィックスによるワイド文字指定は同時に使えないのでしょうか?

コード:

void main(){
  MessageBoxA( 0, "hello", 0, 0);
  MessageBoxW( 0, L"hello", 0, 0);
}
これを

コード:

#define HELLO "hello"
void main(){
  MessageBoxA( 0, HELLO, 0, 0);
  MessageBoxW( 0, LHELLO, 0, 0); // だめ
}
このように書き換えたいです。
混在してる状況がおかしいと言われればそれまでですが(^^;
よろしくおねがいします。

(2:20編集: コードにセミコロンが混入してたのを削除)

Re: [VC++] #defineとLプレフィックスを同時に使いたい

Posted: 2015年8月16日(日) 01:50
by かずま
こんなのはどうでしょうか?

コード:

#include <windows.h>

#define X(x) L##x
#define L(x) X(x)

#define HELLO "hello"

int main(void)
{
    MessageBoxA(0, HELLO, 0, 0);
    MessageBoxW(0, L(HELLO), 0, 0);
    return 0;
}

Re: [VC++] #defineとLプレフィックスを同時に使いたい

Posted: 2015年8月16日(日) 02:20
by びす
返信ありがとうございます、挙げていただいた方法で見事解決しました!
こんな書き換えができるんですね、、勉強になりました><