我应该在 C 字符串文字上使用 _T 还是 _TEXT ?

新手上路,请多包涵

例如:

 // This will become either SomeMethodA or SomeMethodW,
// depending on whether _UNICODE is defined.
SomeMethod( _T( "My String Literal" ) );

// Becomes either AnotherMethodA or AnotherMethodW.
AnotherMethod( _TEXT( "My Text" ) );

两个我都见过。 _T 似乎是为了简洁而 _TEXT 是为了清楚起见。这仅仅是程序员的主观偏好还是比这更具技术性?例如,如果我使用一个而不是另一个,我的代码不会针对特定系统或某些旧版本的头文件编译吗?

原文由 Joe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 550
2 个回答

SDK 的一个简单的 grep 向我们展示了答案是 没关系——它们是相同的。他们都变成了 __T(x)

C:\...\Visual Studio 8\VC>findstr /spin /c:"#define _T(" *.h
crt\src\tchar.h:2439:#define _T(x) __T(x)
包括\tchar.h:2390:#define _T(x) __T(x)

C:\...\Visual Studio 8\VC>findstr /spin /c:"#define _TEXT(" *.h
crt\src\tchar.h:2440:#define _TEXT(x) __T(x)
包括\tchar.h:2391:#define _TEXT(x) __T(x)

为了完整性:

C:\...\Visual Studio 8\VC>findstr /spin /c:"#define __T(" *.h
crt\src\tchar.h:210:#define __T(x) L ## x
crt\src\tchar.h:889:#define __T(x) x
包括\tchar.h:210:#define __T(x) L ## x
包括\tchar.h:858:#define __T(x) x

但是, _从技术上讲_,对于 C++,您应该使用 TEXT() 而不是 _TEXT() ,但它(最终)也会扩展到相同的东西。

原文由 i_am_jorf 发布,翻译遵循 CC BY-SA 3.0 许可协议

提交 Unicode 并使用 L"My String Literal"

原文由 user123456 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题