说明:本人是前端er,因为最近对 UE4(一个游戏开发引擎)产生了兴趣,而这个引擎源开发游戏时需要用到 C++ ,所以就开始入坑 C++ 了。现将自己学习 C++ 的笔记整理并分享出来,以便一些想入门 C++ 的朋友一起学习,将会以系列教程的的形式来编写,这是第一篇。

C++ 是什么?

我们都知道,目前的高级编程语言主要分成两种,一个是面向过程的比如 C,一个是面向对象的比如 Java。而 C++ 时同时整合了这两种特性的语言,在C语言基础上添加的类代表的面向对象。另外,C++模板还支持支持的泛型编程(后面会介绍)。至于 C++ 发展历史,这里不做介绍,大家可以自行查找。

在 C++ 最初发布的时候,在编译过程分成两段的,先是把 C++ 编译成 C,再把 C 编译成机器代码的,就像我们前端写 TS 需要先将 TS 转换成 JS 后浏览器才能识别一样。但是现在的编译器一般都不需要先将C++转换成 C 的,而是一步到位的。

环境搭建

如果是使用 windows 平台,常用的编译器有 visual studio , visual c++6.0 ,borland c++ 和 code block 等。 我相信好多朋友对 visual c++6.0 , borland c++ 和 code block 肯定都不陌生,这是因为大学做课程设计时,老师经常推荐给我们的编译器,但是我不推荐,原因有二,第一,界面长得太丑了,起码是20年前的界面风格,第二,不够智能,比如自动补全或错误提示等都做得不好。至于 visual studio 确实很强大,但是对于新手也不太推荐,毕竟刚开始只是写 helloworld 级别的,如果使用这个就有点杀鸡用牛刀的感觉了。那怎么办呢?

我推荐的做法是,在 vscode(注意不是 visual studio)中编写 C++ 源码,然后使用 gcc 来编译源码,即把编辑器和编译器分开来用。

如果是使用 ubuntu 等 linux 系统,默认是装了 gcc 的,这里也不详细展开。本文主要讲的是 windows 平台下的搭建。

首先,安装 vscode ,同时要装上 C/C++ 插件,它会有自动补全和错误检测等功能(如果没有提示,可以安装 gcc 后再回头不试试)。

比如,我平时写前端,习惯了用 var 来声明变量,则会有如下提示,因为 c++ 是没有 var 标志符的:

鼠标移上去就会显示详细的错误信息:

还有关键字的自动补全,比如我们定义一个 double 类型的变量,输入 doub 就会有很多的选项:

然后,再来安装 gcc 编译器。windows 平台安装可以安装 mingw。可以到这里下载:MinGW-w64 - for 32 and 64 bit Windows。往下稍微翻一下,选 x86_64-posix-seh。

提示:最好不要选择 MinGW-W64 Online Installer , 因为国内网络被墙的原因,在线安装有很大机率会安装失败。

下载完安装包之后,然后解压,你会发现它里面的目录结构如下:

接下来,还需要配置 path 路径,假如我解压到了 C 盘的 mingw 目录,则在环境变量 Path 中添加如下路径:

C:\mingw\bin

配置完成之后 ,打开命令行工具,cmd 或者 powsershell 都可以,输入 gcc -v

如果看到上面的信息,则说明我们的 gcc 已经配置成功了。如果没有,则检查一下你的 path 路径正不正确,或重启一下电脑试试。

现在编辑器和编译器我们都搭好了,可以快乐的来写 Hello World! 啦。

#include <iostream>
int main() {
std::cout << "Hello World!";
return 0;
}

然后在当前目录的终端中输入 g++ main.cpp,就会发现当前目录下多了一个 a.exe 文件。,然后,再到终端中输入 ./a.exe 就可以执行该文件,并有 Hello World! 输出了。当然,编译和运行也可以合并成一条命令 g++ main.cpp && ./a.exe,如下:

这段代码也很简单,首先是 #include 预处理指令引入 iostream 这个头文件,然后在 main 函数中输出 Hello World! 。iostream 这个是标准输入输出流的头文件,我们下面使用 std::cout 就在这里面定义的。

OK,这一章节就写到这里,如果有什么疑问的大家可以在评论区交流讨论哈~。

最后,网上也有很多教程是关于如何把 vscode 配置成可以编译 C++ 的,但是我觉得没有必要,我们就只使用 vscode 作为书写代码的编辑器就够了,编译我们使用命令行工具就行。

写给前端同学的C++入门教程(一):概述和环境搭建的更多相关文章

  1. Unix/Linux环境C编程入门教程(4) Debian Linux环境搭建

    Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 1.广义的Debian是指一个致力于创建自由操作系统的合作组织及其作品,由于Deb ...

  2. Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建

    1. Kali linux是BT5的晋级版本,用于信息安全.基于Debian7内核.新建虚拟机. 2. 选择默认虚拟机 3. 选择稍后安装操作系统 4.选择Linux Debian7 64位,因为Ka ...

  3. Unix/Linux环境C编程入门教程(15) BT5开发环境搭建

    1. Backtrack 是处于世界领先地位的渗透测试和信息安全审计发行版本.有着上百种预先安装好的工具软件,并确定能完美运行,Backtrack5 提供了一个强大的渗透测试平台--从Web hack ...

  4. Unix/Linux环境C编程入门教程(7) OPENBSDCCPP开发环境搭建

    1. 年发起了OpenBSD 专案,希望创造一个注重安全的操作系统. 2.创建一个虚拟机. 3.选择默认的workstation10.0 4.我们选择稍后安装操作系统. 5.我们选择FreeBSD64 ...

  5. 无废话MVC入门教程一[概述、环境安装、创建项目]

    (转载) 本文目标 1.对MVC有初步的了解 2.能够在VS2010的基础之上安装MVC3的开发和运行环境 3.对MVC框架有概括性的认识 本文目录 1.什么是MVC 2.VS2010安装MVC3 3 ...

  6. Unix/Linux环境C编程入门教程(3) Oracle Linux 环境搭建

    Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 2010年9月,Oracle Enterprise Linux发布新版内核--Un ...

  7. 前端组件化Polymer入门教程(1)——初识&amp;&amp;安装

    前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...

  8. (转)前端构建工具gulp入门教程

    前端构建工具gulp入门教程 老婆婆 1.8k 2013年12月30日 发布 推荐 10 推荐 收藏 83 收藏,20k 浏览 本文假设你之前没有用过任何任务脚本(task runner)和命令行工具 ...

  9. 【转】Xamarin.Android 入门之:Xamarin+vs2015 环境搭建

    Xamarin.Android 入门之:Xamarin+vs2015 环境搭建   一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客 ...

随机推荐

  1. cf Canada cup A题

    A. Jumping Ball time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  2. Deep Learning 13_深度学习UFLDL教程:Independent Component Analysis_Exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程.Deep learning:三十三(ICA模型).Deep learning:三十九(ICA模型练习) 实验环境:win7, matlab2015b,16G内存,2T机 ...

  3. 图像分割之(五)活动轮廓模型之Snake模型简介

    在"图像分割之(一)概述"中咱们简单了解了目前主流的图像分割方法.下面咱们主要学习下基于能量泛函的分割方法.这里学习下Snake模型简单的知识,Level Set(水平集)模型会在 ...

  4. css 内联元素inline 行框全解

    首先看一篇文章: CSS框模型:一切皆为框 — 从行框说起 一 行框 看图说话 上图代表了框模型中的行框.line-height 属性设置行间的距离(行高).该属性会影响行框的布局.在应用到一个块级元 ...

  5. 如何更好的理解(pageX,pageY,clientX,clientY,eventX,eventY,scrollX,scrollY,screenX,screenY,event.offsetX,event.offsetY,offsetLeft,style.left)

    1 pageX,pageY:鼠标指针相对于当前窗口的X,Y坐标,计算区域包括窗口自身的控件和滚动条.(火狐特有) 2 event.clientX,event.clientY:鼠标指针相对于当前窗口的X ...

  6. Vivado的helloword计划(一个):硬件project部分

    硬件平台:ZedBoard 软件平台:vivado2013.3 本演示样例通过综合.实现,生成比特流,发送到SDK实现. 启动vivado而且创建一个项目 依据提示操作一步步创建新项目的时候记得选择R ...

  7. Spring与Struts框架整合

    Spring与Struts框架整合 Struts,用Action处理请求 Hibernate,操作数据库 Spring,负责对象创建 Spring与Struts框架整合的关键点在与:让Struts框架 ...

  8. java枚举类(enum) 基础知识讲解

    枚举类是在java 5后新增的,可以用于封装常量,并且还可以为常量的使用提供一些方法. 定义枚举类的语法: public enum EnumName{ 成员1(A,B...),成员2(A,B...), ...

  9. 或许你不知道的10条SQL技巧

    一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 ...

  10. pycharm 对代码做静态检查

    对于下面这种情况,java c这些提前编译的语言,不给你运行机会就立马报错了,但对于动态语言运行之后才能报错,用运行的方法来检查代码错误是在是太坑了,这是py对比静态语言的巨大劣势,尤其是代码文件多行 ...