visual studio中的空项目和非空项目有什么区别?

时间:2013-10-05 12:38:04

标签: c++ winapi visual-c++ operating-system

我想知道visual studio中的empty和not empty(stdafx文件添加)项目有什么区别。什么是stdafx.cpp / h文件?

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

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

在旧书中我找到了这样的代码`

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

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

(抱歉英语不好))))

2 个答案:

答案 0 :(得分:2)

一个问题的很多问题。

1。)空项目和非空项目之间没有实际区别。据我所知,预编译的标题在空项目中是关闭的。 2.)stdafx.h由microsoft用于标准包含。它还充当预编译头的单个包含。如果使用预编译头,则必须包含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

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

答案 1 :(得分:2)

  1. 空项目没有自动编写的源文件或头文件。另一个"非空"项目会自动为您生成一些骨架代码 - 试着看看你得到了什么。
  2. stdafx个文件已预先编译 - 详情here
  3. _t前缀映射到您正在使用的字符编码类型。这是一个微软的扩展。请参阅here本质上,它会在wmain之间切换为unicode与main之间的切换。