0

我想知道 Visual Studio 中的空项目和非空项目(添加的 stdafx 文件)有什么区别。stdafx.cpp/h 文件中有什么?

为什么在该文件中定义 _tmain() 而不是 main() ?

int _tmain(int argc, _TCHAR* argv[])
{
         return 0;
}

在旧书中我发现这样的代码`

int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int),

我应该在哪里编写该代码以强制它工作?

(对不起英语不好))))

4

2 回答 2

2
  1. 空项目没有自动写入的源文件或头文件。其他“非空”项目会自动为您生成一些骨架代码 - 尝试看看您得到了什么。
  2. stdafx文件是预编译的 - 详细信息在这里
  3. _t前缀映射到您正在使用的字符编码类型。这是一个微软扩展。见这里wmain本质上,它在unicode 和main其他代码之间切换。
于 2013-10-05T13:05:19.113 回答
2

一个问题有很多问题。

1.)空项目和非空项目之间没有真正的区别。据我所知,预编译的头文件在空项目中是关闭的。2.) stdafx.h 被微软用于标准包含。它还充当预编译头文件的单一包含。如果使用预编译头文件,则必须包含 stdafx.h。我在这里解释的详细信息: https ://stackoverflow.com/a/18685377/1922748

3.) 默认情况下,Microsoft 使用 UNICODE 字符串,它们使用 16 位而不是 8 位。一个字符总是 8 位的,所以微软为此定义了宏。如果您使用 _UNICODE 编译它(请参阅设置页面),则宏是

#define THCAR short

使用“多个字节”

#define TCHAR char

main 和 _tmain 也是如此

4.) 这不是旧书,而是不同的项目。

_tWinMain

是基于窗口的应用程序的入口点,例如您正在使用的浏览器。

_tmain

是控制台应用程序的入口点。

于 2013-10-05T13:03:46.723 回答