编写时间:2018年10月24日22:22:51
修改时间:2018年10月26日11:04:09
1. 关键字
1. __thread关键字
线程局部存储(tls)是一种机制,通过这一机制分配的变量,每个当前线程有一个该变量的实例.
__thread可用于全局的变量,文件局部静态变量,函数静态变量或一个类中的静态数据成员。不能用于块作用域,自动或非静态数据成员。
2. __builtin_expect函数
暂时归属到这里,后期再看能不能分开整理。
该函数涉及到编译器优化,该函数的功能就是将大概率发生的指令先放于后面,这样使得跳转的时候可以大概率往下走而不需要跳转。
// 大概率会发生的事情,1不是表示一定发生,而是大概率发生
#define LIKELY(x) __builtin_expect(x, 1)
// 小概率会发生的事情,0不表示一定不发生,而是小概率发生
#define UNLIKELY(x) __builtin_expect(x, 0)
2. 函数
1. strchr函数
#include <string.h>
// 函数的功能为在str中查找字符c第一次出现的位置,并返回该位置的指针。
// 返回的指针和str是共用同一块内存的,也就是修改返回值也会修改参数。
char* strchr(char* str, char c);
2. strrchr函数
#include <string.h>
// 函数的功能为在str中查找字符c最后一次出现的位置,并返回该位置的指针。
// 返回的指针和str是共用同一块内存的,也就是修改返回值也会修改参数。
char* strrchr(char* str, char c);
3. snprintf函数
#include <stdio.h>
int snprintf(char *str, size_t size, const char *format, ...)
参数说明:
str:表示需要输入的字符串首指针位置
size:制定输入的最大长度,低于全部输入,多余只输入前面一段
const char* format: 输入格式
4. strerror函数和strerror_r函数
#include <string.h>
// strerror通过传入的errnum返回错误信息的字符串
// 不是线程安全的
char *strerror(int errnum);
// strerror_r将传入的errnum返回的错误信息的字符串写入buf中。
// 是线程安全的
int strerror_r(int errnum, char *buf, size_t n);
5. 强制转型函数
static_cast<T>(U) // 用于基本类型的强制转型
const_cast<T>(U) // 用于常量型的转型
reinterpret_cast<T>(U) // 用于不同类型的转型
dynamic_cast<T>(U) // 用于有继承关系的转型,该转型代价比较大
6. nanosleep函数
#include <time.h>
// 参数说明:
// rqtp: 指定sleep的时间
// rmtp: 没有超时返回的剩余时间
// 函数功能:
// 暂停某个进程直到你规定的时间后恢复
// 返回:
// 成功,也就是等完了全部的时间,返回0,否则,返回-1,并设置错误变量errno
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
参考附录:
https://blog.csdn.net/xj178926426/article/details/54345449
https://www.cnblogs.com/xrcun/p/3210889.html
https://blog.csdn.net/qq_29108585/article/details/78059587