0%

使用 APP_ABI 设置为特定 ABI 生成代码:

1
2
3
APP_STL += gnustl_static
APP_ABI := armeabi-v7a arm64-v8a
APP_PLATFORM := android-16

用于此应用的 C++ 标准库。
默认情况下使用 system STL。其他选项包括 c++_shared、c++_static 和 none

栈:在函数内部声明的所有变量都将占用栈内存。
堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。

SVN使用

大版本发布后打个tag保存代码,没大的bug一般这部分代码就不再动了,万一以后线上出问题可以快速回溯

第一章 绪论

1、C++与C语言的关系

1
2
3
4
C++是一种面向对象的语言,实现了继承、抽象、多态和封装等概念。
C++支持类,而类包含成员数据以及操作成员数据的成员方法。
很多C++编译器都支持C语言。
学习C++等面向对象编程语言,并不需要先学习C语言等过程性语言,不要求具备C语言编程方面的知识和经验。

2、C++的优点

1
C++是一种中级编程语言,既可以高级编程方式编写应用程序,又可以低级编程方式编写与硬件紧密协作的库,控制应用程序的资源使用和性能。

3、C++标准

1
2
3
4
5
6
C++98
C++03
C++11
C++14
C++17
C++20

4、C++编译器

1
2
3
4
5
ICC
GCC/g++ 
Clang
MSVC
VC++

5、C++标准库

1
2
标准函数库:由通用的、独立的、不属于任何类的函数组成,继承自 C 语言。
面向对象类库:是类及其相关函数的集合。

标准函数库

1
2
3
4
5
6
7
输入/输出 I/O
字符串和字符处理
数学
时间、日期和本地化
动态分配
其他
宽字符函数

面向对象类库

1
2
3
4
5
6
7
8
9
10
11
标准的 C++ I/O 类
String 类
数值类
STL 容器类
STL 算法
STL 函数对象
STL 迭代器
STL 分配器
本地化库
异常处理类
杂项支持库

C++ Standard Library headers

1
https://en.cppreference.com/w/cpp/header

6、C++标准模板库STL

1
C++标准模板库STL是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。

6、编译器对C++标准的支持
C++11

1
http://www.klayge.org/wiki/index.php/%E5%A4%9A%E7%A7%8D%E7%BC%96%E8%AF%91%E5%99%A8%E5%AF%B9C%2B%2B11%E7%9A%84%E6%94%AF%E6%8C%81

C++14

1
http://www.klayge.org/wiki/index.php/%E5%A4%9A%E7%A7%8D%E7%BC%96%E8%AF%91%E5%99%A8%E5%AF%B9C%2B%2B14%E7%9A%84%E6%94%AF%E6%8C%81

7、链接器

8、C/C++ 程序编译过程
源代码(source coprede)→预处理器(processor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→链接器(Linker)→可执行程序(executables)

1
http://www.sunistudio.com/cppfaq/

第二章

C++程序被组织成类,而类由成员函数和成员变量组成。

以#打头的预处理器编译指令以及以 int main( )打头的程序 主体。

预处理器是一个在编译前运行的工具。预处理器编译指令是向预处理器发出的命令, 总是以字符#打头。

1
#include <filename>让预处理器获取指定文件的内容,并将它们放在编译指令所处的位置。

std
standard

cout是在名称空间std中定义的一个控制台流,使用流插入运算符<<将文本放入这个流中,std::endl是将回车插入这个流中,cout将会把内容显示到控制台中。
类似的,fstream是在名称空间std中定义个一个文件流,使用流插入运算符<<可将文本插入流中,fstream将会把内容存储到磁盘的文件中。

这个整数值被返回给操作系统,根据应用程序的性质,这可能很有用,因为大多数操作系 统都提供了查询功能,让您能够获悉正常终止的应用程序的返回值。在很多情况下,一个应用程序被 另一个应用程序启动,而父应用程序(启动者)想知道子应用程序(被启动者)是否成功地完成了其 任务。程序员可使用 main( )的返回值向父应用程序传递成功或错误状态。

根据约定,程序员在程序运行成功时返回 0,并在出现错误时返回−1。然而,返回值为 整数,程序员可利用整个整数范围,指出众多不同的成功或失败状态。

使用命名空间,严谨版本,没有包含整个名称空间,而只包含要使用的元素。

务必添加注释,对程序中复杂算法和复杂部分 的工作原理进行解释。
务必以其他程序员能够理解的方式编写注释。
不要使用注释来解释显而易见的代码。
别忘了,不要因为可以添加注释,就编写晦涩 难懂的代码。
别忘了,修改代码时,可能需要相应地更新 注释。

变量让程序员能够将数据临时存储一段时间,而常量让程序员能够定义不允许修改的东西。

所有计算机、智能手机及其他可编程设备都包含微处理器和一定数量的临时存储空间,这种临时 存储器被称为随机存取存储器(RAM)。另外,很多设备还让您能够将数据永久性地存储到硬盘等存 储设备中。微处理器负责执行应用程序,在此过程中,它从 RAM 中获取要执行的应用程序二进制码 以及相关联的数据,这包括显示到屏幕上的数据以及用户输入的数据。

1、官方介绍

Android NDK 是一个工具集,可让开发者使用 C 和 C++ 等语言以原生代码实现应用的各个部分。对于特定类型的应用,这可以帮助开发者重复使用以这些语言编写的代码库。

1
https://developer.android.google.cn/ndk
1
2
3
4
5
6
class MyActivity : Activity() {
  /**
   * Native method implemented in C/C++
   */
  external fun computeFoo()
}

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy
1
$ hexo d -g

More info: Deployment