VC++小知识点

1、C++的win32控制台项目:

(1)Win32是写标准Windows程序的环境;

(2)控制台应用程序是写CUI程序的,也就是该程序运行时系统会自动调用system32下的某个exe给它创建一个字符界面的窗口(一般是黑底灰白字),而窗口应用程序是写GUI程序或完全没有界面的后台程序用的,也就是系统不会自动给该程序创建任何窗口,这种程序一般用来自己创建窗口做GUI程序,或者完全不用任何窗口做后台程序用。

(3)非空项目的话,VS会自动从模板中给你创建一个应用程序框架;而空项目不会,用来自己搭建应用程序框架。

(4)WIN32项目 写普通窗口程序,但非常复杂,麻烦,什么都要从头到尾自己写.

(5)MFC应用程序是写普通的窗口程序的,用了MFC功能,比Win32的简洁.

总结:win32控制台应用程序,写出来后效果是 黑色命令窗口的,不是平时所看的窗口,MFC应用程序是写普通的窗口程序的,用了MFC功能,比Win32的简洁.WIN32项目写普通窗口程序,但非常复杂,麻烦,什么都要从头到尾自己写.空项目就是什么类型都不是的项目,要自己来一点点做,可以做出上面三个来.

2、C++的动态链接库(.dll)与静态链接库(.lib)

见http://www.cnblogs.com/coder2012/archive/2013/04/27/3046573.html

值得注意的是:dll文件,真正的可执行文件,开发成功后的应用程序在发布时,只需要有.exe文件和.dll文件,并不需要.lib文件和.h头文件。

总结:都是函数的封装,用来调用

3、文件夹下面的各种文件

(1)bin下正常是可执行文件,.dll或者.exe之类,要追到path中

(2)Include里面正常都是头文件

4、include<...>与include”...”

(1)include<...>:先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件stdio.h、stdlib.h等用这个方法;

(2)include”...”首先在当前目录下寻找,如果找不到,再到系统目录中寻找。这个用于include自定义的头文件,让系统优先使用当前目录中定义的。

5、.h头文件的作用:

(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。

(2)头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。

6、预编译功能:

预编译头(precompiled header)是程序设计时把头文件编译为中间格式,以节约在开发过程中编译器反复编译该头文件的开销。——来自《维基百科》

可见预编译头的意义就是:防止反复编译某一个头文件。

为何会有预编译头

比如有的头文件包含了巨量的源代码(比如windows.h),如果每一个cpp都包含这个头文件,那么就会导致编译过程非常慢,因为不仅大,而且还要被编译多次。于是呢,有了预编译头技术。把几乎所有cpp都会包含的一堆头文件提取出来放到一个地方,比如stdafx.h中,并在编译工程时,最先编译stdafx.cpp,然后就生成了一个中间文件:.pch,所有cpp都可以使用的文件。你可以看看你的工程所在目录的Debug/Release里面,是否有一个.pch的文件?这就是编译之后的预编译头。也许你以前看到.pch文件,不知道这是啥,现在明白了吧?你看看这文件的大小,10M以上~一个字:硕大无比!应该是工程文件中最大的文件了。

7、C++项目的附加依赖项啥意思:

(1)设置依赖项之后,编译器会首先编译依赖的那个工程。比如A依赖B,你在编译A的时候,会先把B编译,接着再编译A。

(2)是这个样子滴.如果a项目是个exe文件,但是a运行需要dll文件,而dll是b项目.编译a成功需要b的lib.只有b的lib先编译出来,a才会编译成功.此时,b是a的依赖项.

8、项目与解决方案:

(1)项目:

项目是构成某个程序的全部组件的容器,该程序可能是控制台程序、基于窗口的程序或某种别的程序。程序通常由一个或多个包含用户代码的源文件,可能还要加上包含其它辅助数据的文件组成。某个项目的所有文件都存储在相应的项目文件夹中,关于项目的详细信息存储在一个扩展名为.vcproj的xml文件中,该文件同样存储在相应的项目文件夹中。项目文件夹还包括其它文件夹,它们用来存储编译及链接项目时所产生的输出。

(2)解决方案:

顾名思义,解决方案的含义是一种将所有程序和其它资源(它们是某个具体的数据处理问题的解决方案)聚集到一起的机制。例如,用于企业经营的分布式订单录入系统可能由若干个不同的程序组成,而各个程序是作为同一个解决方案内的项目开发的,因此,解决方案就是存储与一个或多个项目有关的所有信息的文件夹,这样就有一个或多个项目文件夹是解决方案文件夹的子文件夹。与解决方案中项目有关的信息存储在扩展名为.sln和.suo的两个文件中。当创建某个项目时,如果没有选择在现有的解决方案中添加该项目,那么系统将自动创建一个新的解决方案。

当创建项目及解决方案时,可以在同一个解决方案中添加更多的项目。我们可以在现有的解决方案中添加任意种类的项目,但通常只添加与该解决方案内现有项目相关的项目。一般来说,各个项目都应该有自己的解决方案,除非我们有很好的理由不这样做。

9、生成解决方案是就是完成整个项目的编译。

你可能感兴趣的:(VC++小知识点)