美文网首页程序设计
CLion新建/编译/执行 C++ 程序

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

作者: 苏州韭菜明 | 来源:发表于2019-01-30 10:17 被阅读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++ 由三个重要部分组成:

    • 核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
    • C++ 标准库,提供了大量的函数,用于操作文件、字符串等。
    • 标准模板库(STL),提供了大量的方法,用于操作数据结构等。

    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' 区别:

    • 1、在 C++ 中,终端输出换行时,用 cout<<......<<endl 与 "\n" 都可以,这是初级的认识。但二者有小小的区别,用 endl 时会刷新缓冲区,使得栈中的东西刷新一次,但用 "\n" 不会刷新,它只会换行,盏内数据没有变化。但一般情况,二者的这点区别是很小的,在大的程序中可能会用到。建议用 endl 来换行。

    • 2、endl 除了写 '\n' 进外,还调用 flush 函数,刷新缓冲区,把缓冲区里的数据写入文件或屏幕.考虑效率就用 '\n'。

    • 3、cout *lt;< 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 生成所有警告信息。

    相关文章

      网友评论

        本文标题:CLion新建/编译/执行 C++ 程序

        本文链接:https://www.haomeiwen.com/subject/zsuqsqtx.html