Sam*_*erg 7 c++ macros tchar character-encoding visual-c++
我是C++编码的新手,来自Java和C#背景.我对最基本的#define术语的扩散感到困惑:
#define _tmain wmain
Run Code Online (Sandbox Code Playgroud)
当我第一次学习C语言时,我的主要功能是:
int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
在我创建的Visual C++项目中,它创建了主要功能:
int _tmain(int argc, _TCHAR* argv[])
Run Code Online (Sandbox Code Playgroud)
我只是想知道为什么要起个名翻译需要wmain来_tmain?为什么不使用原始的C main函数原型?
一般来说,似乎有很多#define重命名的东西,看起来很清楚,看起来更神秘,更不清楚(我的意思wmain是_tmain?).
感谢您容忍可能是一个非常明显的问题.
Jam*_*lis 13
这是Visual C++特有的功能,它不是C++的一部分.
大多数Windows API函数都有两个版本:结尾的版本W,用于宽字符串(wchar_t字符串)和结尾的版本A,用于窄字符串(char字符串).实际的Windows API"函数"没有任何后缀,并且被定义为根据设置扩展到正确版本的宏.
该T名称(如_TCHAR和_tmain)是为了同样的目的:他们是扩大到正确的名称取决于您的编译设置宏,所以wchar_t和wmain宽字符支持,或char与main窄字符的支持.
我们的想法是,如果使用字符类型不可知的名称(T名称)编写代码,则可以编译代码以使用窄字符(ASCII)或宽字符(Unicode)而不更改它.权衡是您的代码不太便携.
因为Microsoft决定向C++添加Unicode支持的最佳方法是添加一个TCHAR类型,它是#defined char或者wchar_t取决于项目属性>配置属性>常规>字符集的值.根据该设置,_tmain也可以#defined main(取chars)或wmain取wchar_ts (取s).
| 归档时间: |
|
| 查看次数: |
1751 次 |
| 最近记录: |