C/CPP关键字和函数总结

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写时间: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.youkuaiyun.com/xj178926426/article/details/54345449
https://www.cnblogs.com/xrcun/p/3210889.html
https://blog.youkuaiyun.com/qq_29108585/article/details/78059587

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值