【Linux】【开发】如何确认C语言中的某个宏是否已生效

  • 🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)
  • 🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd
  • 🌐系列专栏:Linux技术
  • 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!! 👉关注✨、点赞👍、收藏📂、评论。
  • 如需转载请参考转载须知!!

【Linux】【开发】如何确认C语言中的某个宏是否已生效

  • 在开发过程中,经常需要确认某个宏是否已经生效。本文就常用的手段和技巧做一总结。

编译阶段

控制编译的宏

  • 如果某个宏控制了某个C文件的编译,则只要查看是否有该C文件对应的目标文件产生即可。如下面的情况,如果产生了xxx_func.o,则表示CONFIG_XXX_FUNC生效了。
OBJS-$(CONFIG_XXX_FUNC) += $(XXX_DIR)/xxx_func.o 

控制代码的宏

编译错误
  • 在C文件中的宏控制的是一段代码,最简单的确认方式就是在宏控代码中增加编译错误,如果编译通过,则说明宏没有生效。
#ifdef CONFIG_XXX_FUNC
111
...
#endif
符号表
  • 如果宏控制了某个函数或变量的定义,则可通过查看.o文件、ko文件、kallsyms等文件的符号表来确认;如下面这段代码:
#ifdef CONFIG_XXX_FUNC
int xxx_func_flag = 0;
void xxx_func(void)
{
}
#endif

即可通过类似下面的方式来确认:

readelf -a xxx_func.o | grep xxx_func_flag 

运行阶段

日志

  • 通过在宏的控制范围内增加代码,也可在运行期间进行确认。
#ifdef CONFIG_XXX_FUNC
printf("xxx_func called"\n);
xxx_func(void);
#endif

符号表

  • 如果宏控制了某个函数或变量的定义,也可以在运行阶段确认符号表,如内核的
cat /proc/kallsyms | grep xxx_func

如本文对你有些许帮助,欢迎大佬加关注、评论、点赞,有关必回关

相关推荐

  1. c语言是什么?

    2024-04-24 04:28:01       29 阅读
  2. 如何查看Linux某个项目是否在Docker运行

    2024-04-24 04:28:01       22 阅读
  3. C++模板判断类是否存在某个名称成员函数

    2024-04-24 04:28:01       59 阅读
  4. c语言是什么

    2024-04-24 04:28:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-24 04:28:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-24 04:28:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-24 04:28:01       82 阅读
  4. Python语言-面向对象

    2024-04-24 04:28:01       91 阅读

热门阅读

  1. 上海计算机学会2022年11月月赛C++丙组T3最长平台

    2024-04-24 04:28:01       34 阅读
  2. UniApp 中的路由魔法:玩转页面导航与跳转

    2024-04-24 04:28:01       96 阅读
  3. vue ---列表渲染

    2024-04-24 04:28:01       40 阅读
  4. 19篇 vue3进阶

    2024-04-24 04:28:01       43 阅读
  5. 【LeetCode热题100】【链表】排序链表

    2024-04-24 04:28:01       129 阅读
  6. LeetCode 1378、1277、2944

    2024-04-24 04:28:01       54 阅读
  7. 大数据——Zookeeper 安装(集群)(二)

    2024-04-24 04:28:01       179 阅读
  8. 示波器文件-ISF文件-读取说明

    2024-04-24 04:28:01       31 阅读
  9. JVM(2)

    2024-04-24 04:28:01       199 阅读
  10. CUDA编程:其三、CUDA向量加法

    2024-04-24 04:28:01       34 阅读