02 2019 档案
摘要:前言 链接是代码生成可执行文件中一个非常重要的过程。我们在使用一些库函数时,有时候需要链接库,有时候又不需要,这是为什么呢?了解一些链接的基本过程,能够帮助我们在编译时解决一些疑难问题。比如,下面就有一种奇怪的现象。 一个...
阅读全文
摘要:前言 之前在GDB的极致运用一文中,我们讲到了GDB启动调试的多种方式,分别应用于多种场景。今天我们来介绍一下断点设置的多种方式。 1.为何要设置断点 在介绍之前,我们首先需要了解,为什么需要设置断点。我们在指定位置设置断...
阅读全文
摘要:投资自己,什么时候都不晚。 和Unix一样,Linux内核也是用C语言实现的。谈到C,几乎所有的人都会立即想到ANSIC标准。但是Linux内核的实现,其实并不完全符合ANSI C标准。实际上,内核开发者总会使用许...
阅读全文
摘要:前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题。本文将简单介绍一下这些命令。 示例程序 我们用一个小程序,来帮助后面我们对这些命令...
阅读全文
摘要:0. 前言 GDB(GNU Debugger)是UNIX及UNIX-like下的强大调试工具,可以调试ada, c, c++, asm, minimal, d, fortran, objective-c, go, java...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 10、内建函数 GNU C提供了大量的内建...
阅读全文
摘要:图片发自简书App 之前,小编黑鸟连续日更了十篇GNU C中特有的不同于ANSI C标准的语法扩展,这些扩展往往是普通教材中不会提及的。而恰恰是这些%1的语法影响着我们%99的人能否在众多C程序员中脱颖而出,成为同...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 9、特殊属性声明 GNU C允许声明函数、...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 8、当前函数名 GNU C中预定义两个标志...
阅读全文
摘要:要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构行吗? 如果没有好的架构,移植将会是一件很痛苦的事情。如果没有好的架构,复用是最大的难题,没法更大限度的复用原有的代码。如果没有好的架构,一旦驱动改了,所有的地方都要改,费时费力且很容易出错。...
阅读全文
摘要:ANSI C定义了sizeof关键字,用来获取一个变量和数据类型在内存中所占的存储字节数。GNU 扩展了一个关键字,typeof用来获取一个变量或表达式的类型。 int i;typeof(i) j = 20;typeof(int *) a;int f();ty...
阅读全文
摘要:当编写程序时,偶尔会不确定数组的大小(包括存储字符串的数组)。较为方便的做法是等到程序运行时再来确定数组的实际大小。 在标准C中,提供了3个库函数:malloc(),calloc()和realloc()。那么他们有什么区别,分别用在什么场合呢? malloc(...
阅读全文
摘要:0. 编写脚本的注意事项 开头加解释器:#!/bin/bash2)语法缩进,使用四个空格;多加注释说明。 3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。 4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 七、指定初始化 1、数组元素的指定初始化 ...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 6. 柔性数组(flexiblearray...
阅读全文
摘要:我的目标是mobile coding,需要在Termux上搭建一个dev环境,以Go环境为例。 1 Termux上安装ssh服务 在搭建和配置阶段,如果直接通过Android上的软键盘操作,即便屏再大,那个体验也是较差的。我们最好通过PC连到termux上去安...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 5. 标号元素 在标准C里,数组或者结构变...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 4 case范围 在GCC中,你可以在ca...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 3 变参宏 标准C的变参宏 在ISO C9...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 2 局部标签 GCC允许你在任何内嵌代码块...
阅读全文
摘要:要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。 1 语句表达式 GNUC把包含在括号中的复...
阅读全文
摘要:C语言的标准库总共分成十五个部分,每个部分用一个头描述。许多编译器都会使用扩展后的库,因此,包含的头通常会多于十五个。额外添加的头当然不属于标准库的范畴,所以,我们不能假设其他的编译器也可以支持这些头。而这些头通常提供一些针对特定机型或特定操作系统的函数,他们...
阅读全文
摘要:ANSI C定义了sizeof关键字,用来获取一个变量和数据类型在内存中所占的存储字节数。GNU 扩展了一个关键字,typeof用来获取一个变量或表达式的类型。 int i;typeof(i) j = 20;typeof(int *) a;int f();ty...
阅读全文
摘要:本方法可以让C语言指令进一步接近汇编指令的执行效率,提高单片机、嵌入式系统的速度和稳定性,但编程时应采取函数化的编程法——例如使用swap()函数时,必要时加注释。 0. 位运算心法 &(与逻辑):有0出0,全1出1;|(或...
阅读全文
摘要:我们在拜读Linux内核源代码时,是否会经常遇到一些既熟悉又陌生的C语言语法? 熟悉是因为我们对Linux内核中使用的C语法绝大部分都能够看懂。陌生是指内核源代码当中的个别语法运用,我们在普通的C教材中并没有提及和说明。 那么,从今天开始,小编将发表一系列文章...
阅读全文
摘要:什么叫0长度数组 零长度数组就是长度为零的数组,在内存空间中不占用存储位置。ANSI C 标准规定定义一个数组时数组的长度必须是一个常数及数组的长度在编译的时候是确定的;C99 新标准规定可以定义一个变长数组。也就是说数组的长度在编译时是未确定的在程序运行的时...
阅读全文
摘要:无论嵌入式系统多么简单或复杂,开发人员都应密切关注五个关键特性。一些是显而易见的,例如RAM和ROM使用。然而,还有其他人经常被开发人员看过,这很容易成为设计周期中的一个主要问题。 系统时序 询问任何开发人员系统中断或其...
阅读全文
摘要:你是否经常因为记不住众多的linux命令而头疼不已?你是否因为记不住众多的命令参数而头疼不已?或许有人说我可以用谷哥度娘啊?但是不是感觉他们的检索效率又非常低下呢?或许有人说我可以用man命令啊?但是不是通过man命令显示的结果又不易阅读呢?。今天我就是来解救...
阅读全文
摘要:c语言是结构化模块化的语言,是面向过程的程序设计。c++既可以面向过程,也可以面向对象的程序设计(增加了面向对象机制)。c语言的头文件都有.h后缀名,c++中用户自己编制的头文件带.h,系统提供的头文件无后缀名,c++兼容c的头文件。c语言的结构体struct...
阅读全文
摘要:当编写程序时,偶尔会不确定数组的大小(包括存储字符串的数组)。较为方便的做法是等到程序运行时再来确定数组的实际大小。 在标准C中,提供了3个库函数:malloc(),calloc()和realloc()。那么他们有什么区别,分别用在什么场合呢? malloc(...
阅读全文
摘要:一、What Makefile是一个规定了怎么去编译和链接程序的脚本文件,在执行make命令时会执行该文件,window环境下的IDE,如visual studio已经集成了该功能,不需要关心程序的编译规则,在linux下做C/C++开发时经常用到,说到这里首...
阅读全文
摘要:一、引言 在嵌入式系统的硬件设计中,嵌入式微处理器和外围设备接口技术是两个最为核心的部分,然而支撑这个两个部分的基础确实电子电路的基本技术。任何一个嵌入式系统的设计都离不开电子电路的设计。作为嵌入式系统设计师的考试,对这方面的考查或多或少有几题,但在整个考试题...
阅读全文
浙公网安备 33010602011771号