摘自Google开源项目风格指南-C++风格指南

1.#define保护
使用#define防止头文件被多重包含

#ifndef <PROJECT>_<PATH>_<FILE>_H_
#define <PROJECT>_<PATH>_<FILE>_H_

#endif // <PROJECT>_<PATH>_<FILE>_H_

举个栗子~:

#ifndef STDIO_H_
#define STDIO_H_

#include <stdio.h>

#endif //stdio.h

2.函数参数的顺序
定义函数时, 参数顺序依次为: 输入参数, 然后是输出参数。

3.在 #include 中插入空行

以分割相关头文件, C 库, C++ 库, 其他库的 .h 和本项目内的 .h 是个好习惯。

举个栗子~:

#include “foo/public/fooserver.h” // 优先位置

#include <sys/types.h>
#include <unistd.h>
#include <hash_map>
#include <vector>

#include “base/basictypes.h”
#include “base/commandlineflags.h”
#include “foo/public/bar.h”

4.通用命名规则
(1)函数命名,变量命名,文件命名要有描述性;少用缩写。
尽可能给有描述性的命名,别心疼空间,毕竟让代码易于新读者理解很重要。
不要用只有项目开发者能理解的缩写,也不要通过砍掉几个字母来缩写单词。

举个栗子~:

int price_count_reader; // 无缩写
int num_errors; // “num” 本来就很常见
int num_dns_connections; // 人人都知道 “DNS” 是啥

(2)类型名称的每个单词首字母均大写, 不包含下划线: MyExcitingClass, MyExcitingEnum.

举个栗子~: 继续阅读摘自Google开源项目风格指南-C++风格指南

如何将Sublime Text中的代码以彩色高亮形式复制到博客或word文档里

一、安装插件sublimehighlight
1.打开https://github.com/n1k0/SublimeHighlight,点击右下方的download zip。
2.下载后解压缩。打开 Sublime Text,点击Sublime Text -> Preferences -> Browse Packages。

960B4388-4E33-4020-AC07-8A54E989955B

3.弹出Packages 窗口,将刚刚解压后的文件夹拖入 Packages 文件夹。
4.点击 Sublime Text -> Preferences -> Package Settings ->SublimeHighlight ->Settings – User
F1BCFD31-3751-44C2-9E68-177512375563
5.将以下内容复制进配置文件中并保存。
{
    “theme”: “friendly”,
    “linenos”: “inline”,
    “noclasses”: true,
    “fontface”: “Menlo”
}

二、使用方法
选中代码并右键,选择copy as HTML(html 格式) 或者 copy as RTF(富文本格式)
【如果需要复制到博客里就用 html 格式,如果是要复制到 word 文档里,就用富文本格式】,然后到其他地方粘贴即可。
55043519-EBF5-4CF6-AAD0-EA7809651431

三、主题更换
该插件自带的格式有:
  • autumn
  • borland
  • bw
  • colorful
  • default
  • emacs
  • friendly
  • fruity
  • manni
  • monokai
  • murphy
  • native
  • pastie
  • perldoc
  • rrt
  • tango
  • trac
  • vim
  • vs

它们的样式如图:

762C1FEA-A93C-4AA9-8828-242F4986004D

更换它们的方式是:
打开配置文件Sublime Text -> Preferences -> Package Settings ->SublimeHighlight ->Settings – User
“theme”: “friendly”,
中的 friendly 修改为以上任意一种主题的名称,保存即可。
如:
“theme”: “vim”,

《Macbook Pro概要》- Mac的各种功能使用方法

  • 使用AirDrop共享文件(通过 Wi-Fi 在 Mac 或 iOS 设备之间快速传输文件)
打开方式:
Mac:打开Finder后左边侧栏有AirDrop。(如果没有,可以Finder -> 偏好设置 -> 边栏 -> 勾选AirDrop)
iPhone:上拉菜单栏里面有AirDrop。
使用方法:
①先在电脑和手机都打开AirDrop
电脑发给手机:将要发送的文件拖放到要发送的设备的头像上面
|| 手机发给电脑:在图片/视频等文件界面APP上点分享,然后点对应的设备的头像

  • Thunderbolt雷电接口(thunderbolt是由Apple和Intel共同开发的新一代传输接口,双向传输、10Gbps带宽)
1.外部显示器:使用 Mini DisplayPort 转 VGA 转换器,将显示器连接到 MacBook Pro 上的 Thunderbolt 端口
2.买根转接线,就能连网线
3.有的相机厂商的设备支持雷电接口,可以用雷电接口传输照片视频
4.多显示器支持,由于可以单端口连接 6 个设备,理论上,你可以组织7屏工作平台了。
5.连接外置硬盘,速度近800Mb/s
6.连接 VGA 显示器或投影仪。 使用 Mini DisplayPort 转 VGA 转换器,将显示器连接到 MacBook Pro 上的 Thunderbolt 端口

  • HDMI端口(连接HDTV和投影仪)
能够轻松连接 HDTV 和投影仪,通过 HDTV 上的高清分辨率和多通道音频来播放影片和演示文稿等内容。
方法:连接 HDMI 显示器或 HDTV。将 HDMI 的电缆直接插入 MacBook Pro 上的 HDMI 端口。

  • 使用Spotlight搜索(Control + 空格键)
可以搜索任何内容。包括Mac上面的内容,维基百科、地图、新闻、电影、放映时间等。

  • Time Machine(为了保持文件安全,定期对Mac进行备份)
打开方式:
使用AirPort Time Capsule(单独销售) 或者 其他外部储存设备(例如移动硬盘、小米路由器【不过这个只能备份不能还原】) 连接电脑
系统偏好设置 -> Time Machine -> 开
使用方法:
  1.  自动备份您整台 MacBook Pro,包括系统文件、应用程序、帐户、偏好设置、音乐、照片、影片和文稿。
  2. 记住电脑在任意指定日期的状态,以便您可以重新访问 MacBook Pro 过去的状态,或者取回较旧版本的文稿。
  3. 您可以从 Time Machine 备份中恢复整个系统。因此,如果 MacBook Pro 出现了任何问题,您的文件都将安然无恙。

  • 使用 Handoff 跨设备间继续未完成的工作
支持的原生应用包括邮件,备忘录,联系人,日历,Safari,提醒事项,信息,地图,Pages,Numbers 和 Keynote。
打开方式:
Mac:系统偏好设置 -> 通用 -> 允许在这台 Mac 和 icloud 设备之间使用 Handoff
iPhone:设置 -> 通用 ->  Handoff&建议应用 -> 打开 Handoff
使用方法:
打开蓝牙(所有的苹果设备都需要登录同一个 iCloud 账号。)
手机切换到电脑:在iphone上编写邮件/备忘录等,在 Mac 上会出现一个独立的 dock 栏。在这个新的独立 dock 栏中展示了 iPhone 邮件/备忘录等的图标。在 Mac 上打开邮件/备忘录等,你就可以看到刚刚自己在 iPhone 上写了什么东西。
|| 电脑切换到手机:在Mac上编写邮件,在iPhone锁屏界面的左下角会显示邮件的图标,像打开相机快捷方式般上拉即可进入邮件应用。另一个方法是通过应用切换(多任务切换)界面可以看到邮件应用正在被使用。
 

 
  • 家人共享(家人之间可iCloud账户不同)
打开方式:
系统偏好设置 -> iCloud -> 设置家人共享
使用方法:
通过家人共享iTunes Store 、 APP Store 和 iBooks Store里的购买项目
还可以共享照片、家庭日历、提醒事项和位置等

  • AirPrint无线打印
可以使用无线打印的条件:
  • Wi-Fi 网络中支持 AirPrint 的打印机  
  • 一台网络打印机,或 Wi-Fi 网络上其他 Mac 所共享的打印机
  • 连接到 AirPort 基站 USB 端口的打印机

  • AirPlay (通过 AirPlay 镜像在电视机上显示 MacBook Pro 屏幕)
如果您的 HDTV 已连接到 Apple TV, 并且 Apple TV 与 MacBook Pro 处于同一个 Wi-Fi 网络,您可以将 MacBook Pro 显示屏镜像到电视屏幕,或将 HDTV用作第二台显示器。

C语言中二级指针的作用

C语言中不存在引用,所以当你试图改变一个指针的值的时候必须使用二级指针。
1.当不用指针时,参数传入子函数的过程为值传递,子函数中修改的局部变量的值对原来的实参并没有影响。
2.当用一级指针时,参数传入子函数的过程为地址传递,子函数的实际操作是对指针的操作,那就可以通过子函数中对于实参指针的修改达到修改实参的值的目的。
我们通过传递指针来达到修改一个值的目的。那么当你 需要修改一个指针的时候 呢,这个时候我们就需要指针的指针(二级指针):
3.当用二级指针时,是为了修改一个指针
int fun() {
    int *p;
    int m;
    m = init1(&p);
    return m;
}
int init1(int **a) {
    *a = malloc(50);
    return 1;
}
fun()函数通过调用init1()函数实现给p分配内存空间的目的。
p为一个指针,&p就是指向指针p的一个指针(二级指针),
通过把&p传递给init1()函数,此时二级指针a=&p,所以说a是指向指针p的一个指针。
那么对于*a的操作,实际上就是对于指针p的操作,达到了修改指针的目的,这样fun()就可以通过init1()函数来分配内存空间了。
  • 关于值传递

指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。