- 在C++代码中加入对C的支持
#ifdef __cplusplus
extern "C" {
#endif
//一段代码
#ifdef __cplusplus
}
#endif__cplusplus是cpp中的自定义宏,表示如果这是一段cpp的代码,那么加入extern "C",以支持其中的c代码
https://www.cnblogs.com/yuemw/p/7908413.html
GCC可见性属性
#pragma GCC visibility push(default)
代码段
#pragma GCC visibility pop可见性属性可应用到函数、变量、模板、类。
default:没有显式标识为hidden的符号均可见
hidden:没有显式标识为可见的符号均隐藏
https://blog.csdn.net/dai583113948/article/details/80618812
- #if ... #endif:条件编译
- using ::,::表示全局作用域
- #pragma once
在头文件前添加,保证头文件只被编译一次
- using指定别名
using ImageFrame = ::mavp::service::camera::ImageFrame;
- const与constexpr
const:对于修饰的对象来说,并未区分出编译期常量和运行期常量
constexpr:对于修饰的对象来说,限定在了编译期常量,可以优化代码,提高效率
https://www.jianshu.com/p/34a2a79ea947
- mutex、lock_guard、unique_lock
https://www.dazhuanlan.com/2019/10/28/5db5dfb97e95a/
- 初始化列表
class CExample {
public:
int a;
float b;
//构造函数初始化列表
CExample(): a(0),b(8.8)
{}
//构造函数内部赋值
CExample()
{
a=0;
b=8.8;
}
};https://www.runoob.com/w3cnote/cpp-construct-function-initial-list.html
- 匿名命名空间

https://www.cnblogs.com/youxin/p/4308364.html
- std::move()
将左值强制转化为右值
- 字符指针、字符串、数组
char *p,a='5';
p=&a;
p="abcd";双引号做了三件事:申请内存空间(在常量区),存放字符串;在字符串末尾加上字符串结束符‘/0’;返回地址(字符串首字母地址)
//正确
char a[10]="hello";//数组初始化
//错误
char a[10];
a="hello";//数组的值虽然是地址,但是为常量,不能给常量赋值https://www.cnblogs.com/clemente/p/10755964.html
- std::string::find()与std::string::npos


https://www.cnblogs.com/lixuejian/p/10844905.html
- exit( )
exit(value):退出当前运行的程序,并将参数value返回给主调进程
exit(0):表示程序正常退出,非零表示异常退出
- ifstream文件读取操作

- #pragma、_Pragma
#pragma:预处理指令
_Pragma:关键字
- c_str()
string转const char*
待续。。。