2025年CCAN库学习,起始篇

CCAN库学习,起始篇偶然在网上看见有人说起 C 语言库 CCAN 去查了一下 还真的是不错的库 值得研究和学习 准备开一个专栏 每篇写关于一个模块的使用 CCAN 库是 Comprehensiv C Archive Network 缩写 它的网站在 http ccodearchive net 统计这个库全部 c 代码大约行

大家好,我是讯享网,很高兴认识大家。

偶然在网上看见有人说起C语言库CCAN,去查了一下,还真的是不错的库,值得研究和学习。准备开一个专栏,每篇写关于一个模块的使用。

CCAN 库是 Comprehensive C Archive Network 缩写,它的网站在 http://ccodearchive.net/

统计这个库全部c代码大约行


讯享网

头文件大约 36064行

 ccan库中有116个文件夹,相当于116个模块

其中包括base64, bitmap,cpuid,crc,list,btree等等

打开其中某一文件夹,例如cpuid文件夹,如下图

 其中test文件夹编写测试程序,测试本模块

cpuid.c/h 此模块的功能实现

LICENSE 遵循的协议,所有协议的内容都包含的顶层文件夹licenses里面,如下图

 _info 这个文件里面是一段程序,暂时不知道做什么用处,内容如下:

#include "config.h" #include <stdio.h> #include <string.h> #include "cpuid.h" / * cpuid - a CPUID instruction parser for x86/x86_64 CPUs. * * This module tries to keep-it-simple to get information about the CPU * from the CPU. * * Example: * #include <ccan/cpuid/cpuid.h> * #include <stdio.h> * * int main(void) * { * uint32_t highest; * cpuid(CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED, &highest); * printf("Highest extended function supported: %d\n", highest); * * return 0; * } * * Author: Ahmed Samy <> * License: MIT * Version: 0.1 */ int main(int argc, char *argv[]) { if (argc != 2) return 1; if (strcmp(argv[1], "depends") == 0) { #if defined(__i386__) || defined(__i386) || defined(__x86_64) \ || defined(_M_AMD64) || defined(__M_X64) /* Nothing. */ #else printf("ccan/build_assert\n"); #endif return 0; } return 1; } 

讯享网

 感觉和test文件夹里面内容相似。

后续准备每周能学习一个模块,原本想学习一下glib这个库,这个库做的不错,通过c语言来实现面向对象,我下载了最新的glib库,尝试编译,编译未通过,暂时就放弃,CCAN这个库内部模块相对独立,剥离用到项目上应该很容易。还是要多积累。我在工作中主要面向硬件开发,做一些底层固件的开发,想使用C++,但是很多时候g++编译器都没有,没办法,太低层了。

小讯
上一篇 2025-03-22 19:27
下一篇 2025-04-03 12:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/62357.html