程序设计

CLion新建/编译/执行 C++ 程序

2019-01-30  本文已影响133人  苏州韭菜明

C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本。

本教程通过JetBrains CLion 和GCC 以及CMake编译工具来讲解 C++ 编程语言。

文中代码github地址

C++ 简介

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。

C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++。

C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。

注意:使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。

面向对象程序设计

C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性:

标准库

标准的 C++ 由三个重要部分组成:

ANSI 标准

ANSI 标准是为了确保 C++ 的便携性 —— 您所编写的代码在 Mac、UNIX、Windows、Alpha 计算机上都能通过编译。

由于 ANSI 标准已稳定使用了很长的时间,所有主要的 C++ 编译器的制造商都支持 ANSI 标准。

首先安装与配置CLion:

文中不去讲解,安装与配置传送门

完成后如下图:

20190130101024.png

之后CLion新建项目:

20190130093800.png

项目建立完成后出现如下文件与结构

20190130093917.png

运行程序,打印结果如下:

E:\EclipseWorkspace\DailyCode\CppCodes\cmake-build-debug\CppCodes.exe
Hello, World!

Process finished with exit code 0

我们也可以用工具进行手动编译:

如果出现:'g++' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

请按照此方法解决

最简单的编译方式:

$ g++ main.cpp

由于命令行中未指定可执行程序的文件名,编译器采用默认的 a.out。程序可以这样来运行:

$ ./a.out
Hello, world!

通常我们使用 -o 选项指定可执行程序的文件名,以下实例生成一个 helloworld 的可执行文件:

$ g++ main.cpp -o helloworld

执行 helloworld:

$ ./helloworld
Hello, world!

如果是多个 C++ 代码文件,如 main.cpp、notmain.cpp,编译命令如下:

$ g++ main.cpp notmain.cpp -o helloworld

生成一个 helloworld可执行文件。

g++ 有些系统默认是使用 C++98,我们可以指定使用 C++11 来编译 main.cpp 文件:

g++ -g -Wall -std=c++11 main.cpp

你可以用 "\n" 代替以上代码里的 endl

"\n" 表示一个字符串,只有一个数据是回车符。

'\n' 表示一个字符。

这两个在输出上是一样的!

关于 endl与'\n' 区别:

cout << endl; 
等价于: 
\cout << '\n' << flush;

在没有必要刷新输出流的时候应尽量使用 cout << '\n', 过多的 endl 是影响程序执行效率低下。

在 C++ 中,分别使用.h 和.cpp 来定义一个类。

.h 中存放类的声明,函数原型(放在类的声明中)。

.cpp 存放函数体。

也就是说,一个存放声明(declaration),一个存放定义(definition)。

如果我们在一个头文件里声明了一个函数,当我们需要定义这个函数(这个定义是唯一的,也就是只能定义一次),或者需要使用这个函数时,我们在 cpp 中需要 include 这个头文件。

同样地,如果我们在一个头文件里声明了一个类,当我们需要定义类里的成员函数,或者我们需要使用这个类时,我们在 cpp 中需要 include 这个头文件。

对于类的设计者来说,头文件就像他们和类的使用者的一个合同,编译器会强化这一合同,它会要求你在使用这些类里的函数或结构时必须要声明。

g++ 常用命令选项

选项 解释
-ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色, 例如 asm 或 typeof 关键词。
-c 只编译并生成目标文件。
-DMACRO 以字符串"1"定义 MACRO 宏。
-DMACRO=DEFN 以字符串"DEFN"定义 MACRO 宏。
-E 只运行 C 预编译器。
-g 生成调试信息。GNU 调试器可利用该信息。
-IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。
-LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。
-lLIBRARY 连接时搜索指定的函数库LIBRARY。
-m486 针对 486 进行代码优化。
-o FILE 生成指定的输出文件。用在生成可执行文件时。
-O0 不进行优化处理。
-O 或 -O1 优化生成代码。
-O2 进一步优化。
-O3 比 -O2 更进一步优化,包括 inline 函数。
-shared 生成共享目标文件。通常用在建立共享库时。
-static 禁止使用共享连接。
-UMACRO 取消对 MACRO 宏的定义。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。
上一篇下一篇

猜你喜欢

热点阅读