c语言
文章平均质量分 69
longyu_wlz
在写作、音乐、linux 海滩旁捡拾贝壳的小男孩
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
#pragma weak 定义的弱符号的使用场景
强符号与弱符号的问题与应用场景强符号与弱符号是链接中的概念,最早在学习计算机组成原理的时候有所接触。在看到 unity 中的部分源码时,这两个概念重新摆上了台面。弱符号有:未初始化的全局变量、静态变量,弱符号可以有多处定义。强符号有:初始化的全局变量及静态变量,函数定义。强符号只能有一处定义。如果出现多次定义,则会报重复定义的错误。下面是 unity 中使用弱符号的相关代码...原创 2019-10-29 21:22:34 · 2053 阅读 · 0 评论 -
让抽象变得非常简单的 perl 引用功能
perl 引用是什么perl 引用的好处常见的几种引用数组引用哈希数组引用函数引用总结原创 2019-08-22 09:16:16 · 510 阅读 · 0 评论 -
编译器优化及优化问题的调试方法
gcc 优化影响了那些内容Debug Optimized code局部变量从栈里面分配到使用寄存器到直接移除。局部变量只是临时保存中间的计算结果,可以直接优化掉,则调试时不能看到局部变量的值函数中的语句的位置语句的位置会进行调整,与其它的语句进行合并函数调用关系小函数直接展开,多个函数之间可能会合并栈帧。处理器优化读写的合共链接时优化都干了些什么debug 正常 releas...原创 2019-08-16 08:46:18 · 3535 阅读 · 0 评论 -
c 语言中的封装
谈及封装,大多数人首先会想到面向对象设计。封装其实是一个泛型的概念,虽然在面向对象设计中更容易体现出来,却也能够在面向过程的语言中找到应用领域。在本文中,我浅谈下 c 语言中涉及到的封装概念。c 语言是一种面向过程的语言。单就面向过程本身而言并没有太多与封装相关的内容,可一旦我们跳出对封装性的局限思索,那么我们会发现其中不仅用到了封装,而且还算用的相对较多。下面我就 c 语言中每一种可以看做封装...原创 2019-07-15 06:30:14 · 4646 阅读 · 0 评论 -
windows 回车符对 printf 函数的影响
unix 中的命令行工具大都需要直接或间接的操作文件来完成。文件格式会对工具的处理造成影响,有时甚至会得到非常奇怪的结果。我在使用 awk 编写解析脚本来解析文件时就遇到过这样的问题。当时一度怀疑是 awk 内部的 bug,最终却发现原来是换行符的问题。解析的源文件使用了 windows 换行符,行结束字符 rn 中的 r 会使print 的输出变得相当奇怪。查询发现,r 会重置缓冲区到头部...原创 2019-05-17 08:52:16 · 689 阅读 · 4 评论 -
awtk 编译演示 demo 的注意事项
在使用 awtk 开发嵌入式 gui 项目时,一般会先创建一个 PC 端工程来设计 UI。设计好的UI 程序发给客户演示时,在客户的电脑上执行 demo 程序可能会产生异常。这种异常产生的原因可以分为两大类:UI 程序中的潜在问题用户系统的问题具体的描述见下文。UI 程序中潜在的问题1.资源文件从文件系统加载当编译脚本中设定从文件系统中加载资源时,编译好的程序能够在开发环境中...原创 2019-05-10 19:25:02 · 2139 阅读 · 0 评论 -
awtk 扩展控件实例:圆形滑块
awtk 扩展控件实例:圆形滑块本文描述了 awtk 扩展控件编写的方法,工程源码详见 awtk_slider_circle 项目。滑块组件是 gui 中的一种常见组件,用户可以通过拖动滑块来增大、减少预设的值。awtk 中提供了一种滑块的基本实现,这个组件是 slider。awtk 支持垂直、水平两种方向的 slider,如果没有进一步的需求,这种实现便能够很好的工作。如果你觉得这...原创 2019-05-08 08:57:33 · 1760 阅读 · 3 评论 -
未包含头文件导致的问题
未包含头文件导致的问题最近在做项目时遇到了一个奇怪的问题。调用函数获取被调函数返回的指针,获取成功后解引用时偶尔会导致程序崩溃。首先查看源码,没有发现明显的问题。这之后开始调试,在调试中发现被调函数的 return 语句处的指针值是正确的,赋值之后值发生了变化。为了进一步确定问题,我做了如下尝试:复制被调函数的函数体,将其放到调用函数内部执行,再次观察结果。这次问题没有出现,查看地址发现...原创 2018-12-28 19:18:22 · 831 阅读 · 0 评论 -
glibc-strlen 分析
glibc-strlen 分析strlen 以一个字符型指针为参数,使用 const 修饰符保护字符串的值不被改变。strlen 函数的一个常见实现是依次遍历每个字符,如果不为 ‘\0’,则给计数变量加 1,遇到了 ‘\0’ 则返回计数变量的值。这种实现方式当字符串长度很短时有很好的性能,当字符串较长时就有点捉襟见肘了。如果将上述常见实现作为一个天花板,它的短板在于处理长字符串时的不足,...原创 2018-12-26 22:49:05 · 398 阅读 · 0 评论 -
返回一个栈中数据的技巧
返回一个栈中数据的技巧struct mystruct { int id; int current_status;};struct mystruct get_stat() { struct mystruct st; st.id = get_current_id(); st.current_status = get_current_status();...原创 2018-12-06 21:20:08 · 708 阅读 · 2 评论 -
c 语言结构体 padding 的问题
c 语言结构体 padding 的问题C 语言结构体中的每个成员都需要按照相应的大小进行内存对齐,编译器会在结构体成员之间插入 padding 字节来保证每一个成员都能够以对应的数据大小对齐。padding 区域的存储字节,对程序员来说是不可见的,对整个结构体的初始化赋值不会改变 padding 区域的值。请看下面的初始化代码: struct mystruct a = {0};它仅将 ...原创 2018-12-13 20:14:27 · 4113 阅读 · 2 评论 -
在文件中添加行号的不同方法
在文件中添加行号的不同方法你可以直接使用IDE提供的显示行号的功能来完成这一任务,当然你也可以使用其它方式完成此项任务。情景如下:工作中需要给以下代码添加行号:#include <stdio.h>int main(int argc, char *argv[]){ printf("hello world!\n"); return 0;}首先将...原创 2018-11-24 18:10:13 · 1123 阅读 · 0 评论 -
无参函数的应用与限制
无参函数的应用与限制在 C90 标准中,你可以声明一个无参数信息的函数。一个示例如下:void no_arg_func();使用空的小括号来表示没有参数信息,编译器无法获取到参数信息,也就不会进行参数检查,因此你可以传递任意数量的参数。下面是一个具体的应用。#include <stdio.h>#include <stdarg.h>#define MAXARG...原创 2018-10-27 18:01:18 · 691 阅读 · 0 评论
分享