2010-06-01 34 views
7

在Windows头文件tchar.h中定义的两个符号TCHAR_TCHAR之间有什么不同?用例子来解释。简要描述一下您将在代码中使用TCHAR而不是_TCHAR的场景。 (10分)区分TCHAR和_TCHAR

+3

为什么你的问题听起来像一个家庭作业?你能不能花时间改写你的考试,让它听起来更个人化? – 2010-06-01 10:26:19

+6

我真的花了额外的时间,并走出自己的方式,让它听起来像作业。疲倦地看到Windows标题中的所有这些小特性,没有韵或理由。 – 2010-06-01 10:27:10

+1

'tchar.h'不是Windows SDK的一部分,但它是Microsoft CRT的一部分。 – 2010-06-01 10:30:48

回答

7

找到你的答案在这里:

MSDN Forums >> Visual Studio Developer Center >> TCHAR vs _TCHAR

TCHAR和_TCHAR是相同的,但由于TCHAR没有 前导下划线,微软不允许保留它作为一个 关键字(想象一下,如果你有一个名为TCHAR的变量,请考虑 会发生什么)。因此,当语言扩展为 禁用(/ Za)时,TCHAR不会#defined。

TCHAR在winnt.h中定义(当你包括#include 时),以及/ Ze下的tchar.h。 _TCHAR仅在tchar.h中可用(其中#defines _TSCHAR和_TUCHAR)。这些是正常TCHAR数据类型的无符号/有符号变体。

9

除了什么@RussC所述,TCHAR使用由Win32 API和基于所述UNICODE限定,而_TCHAR使用由C运行时和是基于_UNICODE定义来代替。 UNICODE_UNICODE通常一起定义/省略,使得TCHAR_TCHAR可互换,但这不是必需的。它们在语义上分离以供不同框架使用。