自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux 内核开发中模块间函数调用问题

需要在提供函数的模块中使用 `EXPORT_SYMBOL` 导出函数,在使用函数的模块中通过 `extern` 声明函数,或者包含头文件。通过上述方法,可以在同一个文件中维护两个模块的代码,并直接在一个模块中使用另一个模块的函数,而无需导出和声明。在同一个文件中定义两个模块时,函数无需导出即可使用,函数的定义和声明在同一文件中可见,可以直接调用。可以在同一个文件中定义两个模块,但它们仍然需要作为独立的模块进行编译和加载。4. 在同一个文件中定义两个模块,函数还需要导出才能使用吗?

2024-07-01 22:31:46 178

原创 volatile 关键字的使用场景和作用。

volatile关键字在这些场景中的作用是确保变量的可见性和一致性,防止编译器对变量的访问进行优化,从而避免因优化而导致的意外行为或错误。

2024-06-26 21:12:25 370

原创 宏定义的代码块

返回值机制 因为 { ... } 代码块的最后一个语句是 __class_create(owner, name, &__key);因此,class_create 宏调用的返回值就是 __class_create(THIS_MODULE, "adxl345", &__key) 的返回值,这样赋值表达式就可以成立。代码块作为表达式 在 GNU C 的扩展中,允许代码块(compound statement)作为一个表达式返回值。代码块的最后一个语句的值将作为整个代码块的值。赋值后面语句为之前定义的宏,未写出。

2024-06-26 00:51:35 230

原创 函数指针类型在c语言中的应用

本文档解释了如何使用和定义函数指针类型,并比较了使用 'typedef' 和不使用 'typedef' 的情况,并通过一个具体的例子进行说明。这声明了一个名为 `dev_uevent` 的函数指针,该指针指向一个接受两个参数的函数:一个指向 `struct device` 的指针 `dev` 和一个指向 `struct kobj_uevent_env` 的指针 `env`,并返回一个整数。// 使用 typedef 定义函数指针类型。// 声明函数指针类型的变量。// 处理事件的逻辑。

2024-06-26 00:44:55 355

原创 编译器和链接动态库过程

是的,如果你不使用 `dlopen` 和 `dlsym` 动态加载库,而是直接调用动态库中的函数,那么链接器在链接阶段会检查这些函数的定义。当你运行 `main` 时,动态链接器会在运行时加载 `libexample.so` 并解析 `example_function` 的定义。如果你不使用 `dlopen` 和 `dlsym`,而是直接调用动态库中的函数,链接器会在链接阶段检查这些函数的定义,确保它们存在于链接的动态库中。- 编译和链接阶段:编译器和链接器检查动态库文件,确保所有被调用的函数在库中定义。

2024-06-07 12:19:27 254

空空如也

空空如也

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

TA关注的人

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