专注嵌入式、Linux精品教程。 微信公众号:宅学部落 嵌入式视频淘宝店:https://wanglitao.taobao.com
发布时间:2019-04-20 09:39:06
内建函数,顾名思义,就是编译器内部实现的函数。这些函数跟关键字一样,可以直接使用,无须像标准库函数那样,要 #include 对应的头文件才能使用。用来处理变长参数列表;用来处理程序运行异常;程序的编译优化、性能优化;查看函数运行中的底层信息、堆栈信息等;C 标准库函数的内.........【阅读全文】
发布时间:2019-04-19 09:07:19
这一节,接着讲 __atttribute__ 属性声明,__atttribute__ 可以说是 GNU C 最大的特色。我们接下来继续讲一下跟内联函数相关的两个属性:noinline 和 always_inline。这两个属性的用途是告诉编译器:编译时,对我们指定的函数内联展开或不展开。它们的使用方法如下。static inline __attribute__((noinline)).........【阅读全文】
发布时间:2019-04-18 08:59:13
GNU C 通过 __atttribute__ 声明weak属性,可以将一个强符号转换为弱符号。编译器在编译源程序时,无论你是变量名、函数名,在它眼里,都是一个符号而已,用来表征一个地址。编译器会将这些符号集中,存放到一个叫符号表的 section 中。是时候表演真正的技术了。这时候,就需要用编译链接的原理知识来分析这个问.........【阅读全文】
发布时间:2019-04-16 07:48:24
GNU 通过 __atttribute__ 扩展的 format 属性,用来指定变参函数的参数格式检查。我们经常实现一些自己的打印调试函数。这些打印函数往往是变参函数,那编译器编译程序时,怎么知道我们的参数格式对不对呢?因为我们实现的是变参函数,参数的个数和格式都不确定。所以编译器表示压力很大,不知道该如何处理。属性.........【阅读全文】
发布时间:2019-04-15 07:29:11
7.1 属性声明:aligned通过 aligned 属性,我们可以直接显式指定变量 a 在内存中的地址对齐方式。aligned 有一个参数,表示要按几字节对齐,使用时要注意地址对齐的字节数必须是2的幂次方,否则编译就会出错。一般情况下,当我们定义一个变量,编译器会按照默认的地址对齐方式,来给该变量分配一个存储空间地址。如.........【阅读全文】