首页 > 其他分享 >《控制台篇》新建项目

《控制台篇》新建项目

时间:2023-07-27 14:14:48浏览次数:19  
标签:文件 stdafx 项目 新建 编译 cpp 头文件 控制台 include

新建控制台VS2010

参考链接:https://jingyan.baidu.com/article/ff42efa9380edb809e2202fd.html

工具/原料

Microsoft Visual Studio2010

步骤

image

image

image

image

image

image

stdafx.h详解

参考链接:https://blog.csdn.net/u013654125/article/details/78212248

当我们新建项目时,会发现多了一个stdafx.h文件,它起什么作用呢?看下面介绍

1,用VS2008新建项目,选择【Win32】-【Win32控制台应用程序】-输入名称:Test-【确定】

再选【下一步】-默认情况下,我们都是在【空项目】前打上对勾,建立一个纯的C或C++程序。

我们这里选择默认,即【预编译头】前打上对勾,之后【完成】

2,在Test项目中,头文件有stdafx.h和targetver.h,源文件有stdafx.cpp和Test.cpp,还有一个ReadMe.txt文件。

3,默认的主函数为

#include "stdafx.h"


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

和我们一般的写的程序不一样,我们一般会写成下面的形式:

#include  <stdio.h>

int main()
{
	   return 0;
}

4,我们要纠结,这里怎么没有了stdio.h了呢,取而代之的是stdafx.h呢?
我们打开stdafx.h文件,如下:

// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>



// TODO: 在此处引用程序需要的其他头文件

可以看到,这里包含了stdio.h库文件,为什么包含到这里呢?我们先不急着解答。
先看看,stdafx.cpp文件:

// stdafx.cpp : 只包括标准包含文件的源文件
// Test.pch 将作为预编译头
// stdafx.obj 将包含预编译类型信息

#include "stdafx.h"

// TODO: 在 STDAFX.H 中
// 引用任何所需的附加头文件,而不是在此文件中引用

这里面只有包含的库文件,没有操作,它是做什么用的呢?
在ReadMe.txt中,我们看到这么一段话:

其他标准文件:
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 Test.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。

原来是生成预编译头文件!

5,百科上参看下:

一、什么是预编译头?
  所谓预编译头,就是把头文件事先编译成一种二进制的中间格式,供后续的编译过程使用。预编译头物理上与通常的的.obj文件是一样的,但是千万不要把这个中间格式与. o/.obj/.a/.lib的格式混淆,他们是截然不同的!所以预编译头文件的特性和目标文件也不同(尽管他们都属于某种中间文件)。编译入预编译头的.h,.c,.cpp文件在整个编译过程中,只编译一次,如预编译头所涉及的部分不发生改变的话,在随后的编译过程中此部分不重新进行编译。进而大大提高编译速度,并便于对头文件进行管理,也有助于杜绝重复包含问题。——但也有类似的地方的,比如,它们都是编译器之间不兼容的^_^,就是说你不能把VC生成的预编译头拿到GCC上去用。甚至扩展名都不一样,VC的是大家都熟悉的. pch,而GCC的,是.gch。
二、什么时候使用预编译头?
  当大多.c或.cpp文件都需要相同的头文件时。
  当某些代码被大量重复使用时。
  当导入某些不同库都有实现的函数,并产生混乱时。

6,可以知道预编译,是为了提高编译速度!
再看下面一段话

stdafx.h    

1名称的英文全称为:Standard Application Fram Extend  
  所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。   
  预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。   
  编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。   
  因此,所有的MFC实现文件第一条语句都是:#include "stdafx.h"。  

2 详细工作原理及作用  
  stdafx.h中没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。   
  Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。   
  为避免这种浪费,AppWizard和VisualC++编译程序一起进行工作,如下所示:   
  ◎AppWizard建立了文件stdafx.h,该文件包含了所有当前工程文件需要的MFCinclude文件。且这一文件可以随被选择的选项而变化。   
  ◎AppWizard然后就建立stdafx.cpp。这个文件通常都是一样的。   
  ◎然后AppWizard就建立起工程文件,这样第一个被编译的文件就是stdafx.cpp。   
  ◎当VisualC++编译stdafx.cpp文件时,它将结果保存在一个名为stdafx.pch的文件里。(扩展名pch表示预编译头文件。)   
  ◎当VisualC++编译随后的每个.cpp文件时,它阅读并使用它刚生成的.pch文件。VisualC++不再分析Windowsinclude文件,除非你又编辑了stdafx.cpp或stdafx.h。   
  这个技术很精巧,你不这么认为吗?(还要说一句,Microsoft并非是首先采用这种技术的公司,Borland才是。)在这个过程中你必须遵守以下规则:   
  ◎你编写的任何.cpp文件都必须首先包含stdafx.h。   
  ◎如果你有工程文件里的大多数.cpp文件需要.h文件,顺便将它们加在stdafx.h(后部)上,然后预编译stdafx.cpp。   
  ◎由于.pch文件具有大量的符号信息,它是你的工程文件里最大的文件。   
  如果你的磁盘空间有限,你就希望能将这个你从没使用过的工程文件中的.pch文件删除。执行程序时并不需要它们,且随着工程文件的重新建立,它们也自动地重新建立。  

要点:
(1), Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。
(2),MFC中,你编写的任何.cpp文件都必须首先包含stdafx.h。

(3),由于.pch文件具有大量的符号信息,它是你的工程文件里最大的文件,不需要的时候可以删除。

7,我们可以自己设置自己的预编译文件,不一定非要是stdafx.h

右击stdafx.cpp文件,选择【属性】-【C/C++】-【预编译头】-【创建/使用预编译头】

可以看到有3个选项:【创建预编译头】、【使用预编译头】和【不使用预编译头】。

stdafx.cpp肯定选择的是【创建预编译头】

============================================================================

再右击Test.cpp文件,选择【属性】-【C/C++】-【预编译头】-【创建/使用预编译头】

可见,它选择的是【使用预编译头】,下面选的文件是StdAfx.h文件,最下面指明的是pch文件的路径

================================================================================

如何创建自己的预编译文件,其实过程正如上面我们讲的过程。

如果工程很大,头文件很多,而有几个头文件又是经常要用的,那么

1,把这些头文件全部写到一个头文件里面去,比如写到preh.h

2,写一个preh.c,里面只一句话:#include "preh.h" ,为了生存pch预编译文件

3,对于preh.c,在【属性】里面设置【创建预编译头】,对于其他.c文件,设置【使用预编译头】

新建HelloWorld

参考链接:https://jingyan.baidu.com/article/2d5afd6988b6f2c4a3e28e70.html

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。“Hello world!”算是最简单的程序了。

工具/原料

C++编译器(本篇使用Visual Studio2019)

步骤

image

image

image

image

image

代码

#include <iostream>//头文件

using namespace std;

int main()//主函数

{

	cout << "Hello world!\n";//cout是输出,\n是换行符,“”中可输入中文

	return 0;//结束程序

}

image

Ctrl+F5 编译运行后控制台上会显示出“Hello world”。

标签:文件,stdafx,项目,新建,编译,cpp,头文件,控制台,include
From: https://www.cnblogs.com/fusio/p/17584744.html

相关文章

  • java 项目整合rabbitmq后内存飙高
    Java项目整合RabbitMQ后内存飙高的原因及解决办法在Java项目中使用RabbitMQ作为消息队列的时候,有时候会出现内存飙高的问题,特别是在消息量较大的情况下。本文将探讨这个问题的原因,并提供解决办法。问题分析当Java项目整合RabbitMQ后,内存飙高的原因通常是由于消息的生......
  • 《Win32篇》新建项目vs2008
    VS2008新建项目参考链接:https://blog.csdn.net/candyliuxj/article/details/7350053(1)新建Win32项目点击上图的确定后,出现Win32应用程序向导,点击下一步,出现下图界面,选择附加选项中的空项目,点击完成,新建项目完成。(2)添加预编译头从解决方案资源管理器中可看到,新建的Win32项目......
  • 《Win32篇》新建项目vs2015
    vs2015新建项目参考链接:https://blog.csdn.net/wowocpp/article/details/79260945创建一个最简单的win32应用程序使用的是vs2013中文版首先创建一个win32应用程序工程也可以使用快捷键Ctrl+Shift+N创建的工程名字是HelloApp下一步建立一个空项目创建后的工程如......
  • 《Win32篇》空项目、Win32项目、MFC项目、Win32控制台的区别
    空项目、Win32项目、MFC项目、Win32控制台的区别参考链接:https://www.cnblogs.com/MCSFX/p/13267287.html参考链接:https://www.zhihu.com/question/20524989/answer/17575697空项目控制台控制台没有窗口,控制台与有窗口的(例如:win32、mfc)交互方式不同,前者是CML(命令模式),后者是G......
  • 创建vue项目
    1.vuecreateprojectname  2.选择vue33.创建成功 4.启动项目  5.在package.json中,查看启动命令,有时候不是npmrunserve  6.安装插件安装axios:npmiaxios安装bootstrap:[email protected]在main.j......
  • 在GO语言中项目中使用zap日志库
    在GO语言中项目中使用zap日志库本文先介绍了GO语言中原生的日志库中使用,然后想继续介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档。在GO语言项目中使用zap日志库介绍在许多go语言项目中,我们需要一个好的日志记录器能够提供下面这些功......
  • 浅谈Excel开发:八 Excel 项目的安装部署
    前面几篇文章讲解了Excel开发的几个比较主要的也是比较重要的方面,比如菜单系统,Excel对象模型,自定义函数,RTD函数,异步自定义函数,用户自定义任务面板等,在实际开发中我们还会遇到各种“千奇百怪”的问题,以及开发中的一些注意事项和技巧等,后面有空我会写文介绍。当我们的Excel外接应用......
  • 【Java】信创开发(东方通)中台后端项目踩坑小记
    在万事国产化以备世界风云突变之日,我们做软件开发的也不可避免的需要完成一部分信创项目,通常Web项目国产化部署的首要选择都是东方通Web容器。此次中台项目信创适配过程中踩坑无数,唯独这个坑让我印象深刻念念不忘,接下来就请诸君与我共同复盘一下。背景:中台项目源于ruoyi开......
  • 【项目实战】手把手教你利用博客园API开发、上线一个自己的博客小程序
    说明本篇希望用最简单的方式帮助大家上线一个属于自己的实用的小程序,帮助大家体验一个相对较完整的小程序创建、上线流程,步骤会尽可能详尽;文章会更像新手教程,只是引导零基础的同学入个门,所以会尽可能避免让大家自行编辑代码,因此在文中也不会对代码逻辑就进解释,文章中也会附上源......
  • App项目测试内容
    App测试包发布和管理App客户端(内部)发布平台在实际测试工作中,为了方便测试程序包的安装和管理,可以使用一些应用内测分发平台。如:蒲公英、Testlink等。操作步骤:开发将应用测试包上传到这些平台上平台可以生成对应的二维码测试直接扫码进行应用安装App客户端(线上)发布平台......