自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 线程池含管理线程

【代码】线程池含管理线程。

2024-03-04 21:53:05 145

原创 C++中this指针到底是什么?

转自。

2023-11-13 12:55:22 95 1

原创 python中使用pyqtgraph打包成exe后,再运行出错的解决方法介绍。缺pyqtgraph.graphicsitems.viewbox.axisctrltemplate_pyqt5或This

pyqtgraph.graphicsitems.viewbox.axisctrltemplate_pyqt5模块或This application failed to start because no Qt platform plugin could be initialized.

2023-10-19 16:58:26 231 1

原创 关于linux中自带led驱动框架源码中宏函数device_for_each_child_node(dev, child)的使用问题迷惑及解答

所以,在这段代码中,`device_for_each_child_node(dev, child)`是用来遍历设备`dev`的子设备节点,并将每个子设备节点的指针保存到变量`child`中。其中,`first_child(dev)`和`next_child(child)`是两个函数,用于获取设备`dev`的第一个子设备节点和下一个兄弟子设备节点。其实上面是个for循环,注意看for括号,这只是定义了for如循环,但没有定义for里面执行的逻辑,而调用此宏后的大括号就是for循坏执行的逻辑。

2023-10-05 17:24:36 153

原创 snprintf函数是一个安全的字符串格式化函,利用sprintf()函数将几种数据类型转化为字符串

然后,在循环中使用变量 `i` 作为GPIO的编号,并使用 `sprintf` 函数将对应的GPIO名称格式化到 `gpioName` 字符串中。在此示例中,我们假设GPIO的名称为 `"led-gpio"` 加上对应的编号。

2023-10-04 21:43:11 82 1

原创 linux内核函数of_flat_dt_match_machine函数名解析

`of_flat_dt_match_machine`:函数名字的前缀 `of` 表示该函数与 Open Firmware(OF)相关,中间部分 `flat_dt` 表示使用平面设备树(Flat Device Tree)作为输入参数,后缀 `match_machine` 表示该函数的目的是用于匹配适配的机器。- `get_next_compat`:这是一个函数指针,指向一个函数,该函数接受一个指向指针数组的指针作为输入参数,并返回一个指向常量空类型的指针。

2023-09-20 16:56:54 109 1

原创 C++中auto与函数指针的用法,函数指针和函数的联系

在上面的示例中,我们声明了一个名为 `ptr` 的函数指针,使用函数名 `myFunction` 将其赋值为指向 `myFunction` 函数的指针,然后通过 `(*ptr)(3.14, 42)` 调用函数。2. `double(*)(double, int)` 是一个函数指针类型。1. `double fm(double, int)` 是一个函数声明,它定义了一个名为 `fm` 的函数,该函数接受一个 `double` 类型的参数和一个 `int` 类型的参数,并返回一个 `double` 类型的值。

2023-08-06 11:23:55 108

原创 python中class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__()

在 `super(MainWindow, self).__init__()` 中,明确指定了要调用的父类是 `MainWindow` 的父类,这样可以确保调用正确的构造函数。- 而在 `super().__init__()` 中,并没有明确指定父类的名称,而是通过使用当前类和实例对象,自动获取父类。`super().__init__()` 和 `super(MainWindow, self).__init__()` 本质上是相同的,都是用来调用父类的构造函数。类,并在其构造函数中调用了父类的构造函数。

2023-07-28 21:15:27 687 1

原创 C++中可以有匿名的智能指针吗?智能指针为什么不能指向已有变量的地址?可以把普通指针转换成智能指针吗?

C++中可以有匿名的智能指针吗?智能指针为什么不能指向已有变量的地址?可以把普通指针转换成智能指针吗?

2023-07-28 09:46:01 156 1

原创 std::unique_ptr<double[]>pad(new double[5])和std::unique_ptr<double>pad[5](new double)有什么区别

也就是说,每个元素都具有自己的动态分配的 `double` 对象。第二个 `std::unique_ptr pad[5]` 建立了一个包含 5 个 `std::unique_ptr` 的数组,并每个元素分别指向一个 `double` 对象,并输出它们的值。总结来说,`std::unique_ptr` 用于管理动态分配的数组,而 `std::unique_ptr pad[5]` 用于管理多个独立的动态分配的 `double` 对象。

2023-07-23 15:30:53 85

原创 static_cast和dynamic_cast的向下类型转换有什么区别

如果向下转换是不安全的,即基类指针或引用指向的对象实际上不是派生类对象,那么 `dynamic_cast` 返回一个空指针(`nullptr`),或者在引用转换中抛出 `std::bad_cast` 异常。在 C++ 中,`static_cast` 和 `dynamic_cast` 都可以用于执行向下类型转换,即将基类的指针或引用转换为派生类的指针或引用。- 如果向下转换是安全的,即基类指针或引用指向的对象实际上是派生类对象,那么 `static_cast` 将执行转换并返回指向派生类的指针或引用。

2023-07-20 17:32:55 135 1

原创 C++重载函数时,将区分常量和非常量函数的特征标。这句话如何理解?const不同位置解析

通过函数的常量属性,编译器能够选择正确的函数版本。然而,如果我们定义了同时在常量(const)和非常量对象上进行操作的成员函数时,编译器将使用函数的常量属性来进一步区分这些函数,以便正确地选择相应的函数版本。如果同时存在一个常量成员函数和一个非常量成员函数,并且我们通过一个常量对象来调用该函数,那么编译器将选择常量成员函数。因此,“C++重载函数时,将区分常量和非常量函数的特征标”这句话的意思是,当我们对函数进行重载时,函数的常量属性被用作进一步区分函数版本的标识,以便编译器能够正确选择匹配的函数版本。

2023-07-19 11:57:21 136

原创 在catch语句中使用基类对象时,捕获所有的派生类对象,但派生特性将被剥去,因此将使用虚方法的基类版本

在`main()`函数中,我们抛出了一个`Derived`对象,并在`catch`块中使用基类引用捕获该对象。因此,在 `catch` 块中如果使用的是基类对象,并且希望调用派生类特有的方法,应该考虑使用基类指针或引用来捕获异常对象,或者在特定情况下可以使用动态转换 `dynamic_cast` 来将基类指针或引用转换为派生类指针,并在转换失败时进行适当的处理。在`catch`块中,我们可以通过基类指针`ptr`访问基类的方法,并通过将其转换为派生类指针`derivedPtr`,以便访问派生类的特有方法。

2023-07-19 10:51:52 69

原创 typedef const int *(*pal)[10]怎么理解,using pa2=const int *(*)[10]

在上述示例中,我们首先定义了一个 `const int` 数组 `arr`,然后定义了一个 `const int*` 类型的指针数组 `ptr_arr`,并使用该数组为每个元素赋值。`pal` 是一个类型别名(`typedef`),它代表了一个指针数组,数组中的每个元素都是一个指向 `const int*` 类型的指针。接下来,我们声明了一个 `pal` 类型的指针变量 `ptr_arr_ptr`,并将其初始化为指向 `ptr_arr` 数组的地址。

2023-07-15 11:44:09 76 1

原创 C++中包含可以访问保护成员吗

在上述示例中的代码中,`Container` 类通过创建一个 `Component` 对象作为其成员变量,实现了对 `Component` 类的包含关系。需要注意的是,包含关系是一种强耦合的关系,包含类和被包含类的实现紧密地结合在一起。尽管包含类可以直接访问被包含对象的保护成员,但这也意味着包含类与被包含类之间的耦合度较高。在包含关系中,一个类(包含类)将另一个类(被包含类)作为其成员变量。包含关系中,包含类可以访问被包含对象的保护成员,这是由于访问权限规则和包含关系的实现方式所决定的。

2023-07-11 10:47:40 132

原创 单例模式(Singleton pattern)

Singleton模式是一种创建型设计模式,它的目的是确保类只有一个实例,并提供全局访问点以便于访问该实例。在这个示例中,Singleton类的构造函数被声明为私有,确保其他代码无法直接实例化该类。通过静态成员变量 `instance` 和静态成员函数 `getInstance()`,我们可以获取Singleton类的唯一实例。3. 静态成员函数:提供一个静态成员函数,用于获取类的唯一实例。如果已存在,则直接返回现有实例。2. 静态成员变量:在类中定义一个静态成员变量,用于持有类的唯一实例。

2023-07-09 21:05:12 56 1

原创 C++中右值得概念。ai回答的,只是保存方便自己看

在实际中,右值引用和移动语义常用于优化大型对象的复制、避免不必要的拷贝操作、实现移动语义的容器等。此外,在C++11后的版本中,还引入了右值引用相关的特性,如完美转发(Perfect Forwarding)和转移构造函数(Move Constructor)等,进一步提高了代码的效率和灵活性。右值通常是在表达式求值过程中生成的临时值,如常量、表达式的结果,或者被转换为右值引用的对象。右值引用:右值有一个特殊的引用类型,即右值引用(Rvalue Reference),它使用。

2023-07-09 11:22:50 79 1

原创 C++中静态成员函数是不依赖于任何对象实例的函数?

在这个示例中,`MyClass`类包含一个静态成员变量`staticMemberVariable`和一个静态成员函数`staticMemberFunction`。在`main`函数中,我们直接通过类名调用了静态成员函数,而不需要先创建类的对象实例。因此,在静态成员函数内部无法访问非静态成员变量或调用非静态成员函数,因为这些操作通常是与特定对象实例相关的。静态成员函数通过类名进行调用,而不是通过类的实例。静态成员函数通常用于执行与类相关但不依赖于对象实例的任务,例如提供类级别的功能或处理静态成员变量。

2023-06-30 16:00:28 350

原创 只针对个人遇见卡在Xil_DataAbortHandle循环while的解决办法

只针对个人遇见卡在Xil_DataAbortHandle循环while的解决办法

2023-05-26 17:31:08 1393 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除