- 在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*
待续。。。
本文涵盖了C++中的一些重要知识点,包括如何在C++中加入C代码的支持,GCC的可见性属性,条件编译,命名空间,常量与 constexpr 的区别,锁管理(mutex, lock_guard, unique_lock),初始化列表,匿名命名空间,std::move 的使用,字符指针、字符串和数组的细节,以及文件读取和预处理指令等。这些内容对于理解和提升C++编程技能非常有帮助。"
119985483,569322,Scratch编程实践:十字回文诗解析与四级真题,"['Scratch', '编程教学', '考试指南', '编程实践', '儿童编程']
699

被折叠的 条评论
为什么被折叠?



