stm32单片机的core_cm3.h库函数是干啥的啊?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32单片机的core_cm3.h库函数是干啥的啊?相关的知识,希望对你有一定的参考价值。
参考技术A STM32的内核是ARM CORTEX-M3,这个core_cm3.h包含的是一些内核相关的函数和宏定义,例如核内寄存器定义、部分核内外设的地址等等,其对应的是core_cm3.c文件。初学可以不管他,只要把它包含进工程里就行了,这里都是非常底层的函数,上层的一些函数直接调用它们了。如果对CORTEX-M3内核有兴趣或者基础较高,想深入了解这些函数,可以仔细研读一下。。希望对你有帮助~~本回答被提问者和网友采纳
C函数后面多加两条下划线是干啥的?
我看到有个C语言程序,在头文件内有预编译命令
#define idxmalloc idxmalloc__
然后调用函数的地方格式是
/* weight per element */
idxtype *elmwgt = idxmalloc(Klocal, "elmwgt");
这个 idxmalloc 是个第三方库中的函数,编译的时候需要打包成*.a文件,我查了下函数定义格式,定义时候函数名后并没有两条下划线
idxtype *idxmalloc(int n, char *msg)
if (n == 0)
return NULL;
return (idxtype *)GKmalloc(sizeof(idxtype)*n, msg);
问题就是为什么头文件要用 “#define idxmalloc idxmalloc__” 重新定义 idxmalloc 而不出错?
难道是因为调用动态库中函数的原因??
idxmalloc__ 和 idxmalloc 是不同的名字,前者多了2个字符。
程序员 用 尾巴加2个下划线 作为 特殊类 的名字 是一种 偏好。
就像有人用 一个大写字母开头,后面用小写 的名字 作为 特殊类 的名字 一样,也是 是一种 偏好。
目的是 加强 程序 的 可读性 (程序员 自己 易懂) 参考技术A 命名规则允许有下划线,就是 int a_; 这是合法的追问
什么意思?就是说后面加两条线和不加一样?
追答不是一样的哦,
int a和int a_,这是两个变量,你就把下划线当作名字的一部分就是了
可是从头文件里面可以看出,程序调用库中函数的名是 idxmalloc__
(预编译命令 #define idxmalloc idxmalloc__ )
这个 idxmalloc__ 函数又在哪里呢?
外部库只能找到 idxmalloc 函数定义……
就算真的不是因为动态库的原因,那么头文件里把 idxmalloc 的调用全部换成 idxmalloc__ ,也应该出错呀?
以上是关于stm32单片机的core_cm3.h库函数是干啥的啊?的主要内容,如果未能解决你的问题,请参考以下文章