-3

_T(x) マクロが定義に基づいて文字列リテラルをユニコード/マルチバイト文字列に変換することは知っていますが、アンダースコアと括弧を作成する必要があるのは非常に面倒です。本当に混乱します。私は静かではありませんマクロに精通しているのでわかりませんが、すべての文字列リテラルを検出して適切なユニコード/マルチバイト文字列に変換する方法はありますか?

4

3 に答える 3

1

いいえ、Windows でコードを移植できるようにする場合、マクロを完全に回避する方法はありません。#define t(x) whatever_T_doesもちろん、キーストロークを節約したい場合のように、独自のマクロを定義することもできますが、これはおそらくコードの将来のメンテナーを怒らせるでしょう.

于 2014-03-22T10:11:07.660 に答える
1

_T()および_TEXT()C ランタイム マクロであり、Win32 マクロではありません。 TEXT()(アンダースコアなし) は Win32 マクロです。基本的には同じことを行いますが、C ランタイム マクロは C 関数でのみ使用し、Win32 マクロは Win32 関数で使用する必要があります。それらを混ぜないでください。

于 2014-03-23T04:51:40.600 に答える
0

マルチバイトと Unicode の両方をコンパイルする機能が本当に必要ですか? マルチバイトが必要な場合は、マクロは必要ありません。Unicode アプリでは、アンダースコアや括弧を必要としない L"literal string" を使用する方が簡単です。

于 2014-03-22T14:12:34.383 に答える