gpt4 book ai didi

c++ - 为什么会有定义_tmain 的宏?

转载 作者:可可西里 更新时间:2023-11-01 18:11:40 36 4
gpt4 key购买 nike

我是 C++ 编码新手,具有 Java 和 C# 背景。我对从最基本的开始的#define 术语的激增感到困惑:

#define _tmain wmain

当我几年前第一次学习 C 语言时,主要功能是:

int main(int argc, char *argv[])

在我创建的Visual C++项目中,它做了main函数:

int _tmain(int argc, _TCHAR* argv[])

我只是想知道为什么需要将名称从 wmain 转换为 _tmain?为什么不直接使用原始的 C main 函数原型(prototype)?

一般来说,似乎有很多 #define 将一些看起来很清楚的东西重命名为看起来更神秘和不太清楚的东西(我的意思是 wmain_tmain ??).

感谢您容忍这个可能非常明显的问题。

最佳答案

这是特定于 Visual C++ 的功能,它不是 C++ 的一部分。

大多数 Windows API 函数有两个版本:以 W 结尾的版本,用于宽字符串(wchar_t 字符串)和以 wchar_t 结尾的版本A,用于窄字符串(char 字符串)。实际的 Windows API“函数”没有任何后缀,被定义为根据设置扩展到正确版本的宏。

T 名称(如 _TCHAR_tmain)具有相同的目的:它们是扩展为正确名称的宏,具体取决于您的编译设置,所以 wchar_twmain 用于宽字符支持,或者 charmain 用于窄字符支持。

这个想法是,如果您使用与字符类型无关的名称(T 名称)编写代码,则可以将代码编译为使用窄字符 (ASCII) 或宽字符 (Unicode) ) 而不改变它。代价是您的代码的可移植性较差。

关于c++ - 为什么会有定义_tmain 的宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4937012/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com