自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (24)
  • 收藏
  • 关注

原创 非标准C库怎么链接?

前言链接是代码生成可执行文件中一个非常重要的过程。我们在使用一些库函数时,有时候需要链接库,有时候又不需要,这是为什么呢?了解一些链接的基本过程,能够帮助我们在编译时解决一些疑难问题。比如,下面就有一种奇怪的现象。一个奇怪的链接问题程序功能很简单,计算e的n次方。程序清单如下(代码一):#include<stdio.h>#include<m...

2019-02-28 21:11:58 257

原创 GDB的断点调试

前言之前在GDB的极致运用一文中,我们讲到了GDB启动调试的多种方式,分别应用于多种场景。今天我们来介绍一下断点设置的多种方式。1.为何要设置断点在介绍之前,我们首先需要了解,为什么需要设置断点。我们在指定位置设置断点之后,程序运行到该位置将会“暂停”,这个时候我们就可以对程序进行更多的操作,比如查看变量内容,堆栈情况等等,以帮助我们调试程序。2.查看已设置的...

2019-02-28 20:34:37 2908

原创 Linux内核使用的GNUC扩展

投资自己,什么时候都不晚。 和Unix一样,Linux内核也是用C语言实现的。谈到C,几乎所有的人都会立即想到ANSIC标准。但是Linux内核的实现,其实并不完全符合ANSI C标准。实际上,内核开发者总会使用许多gcc提供的C语言的扩展部分。内核开发者使用的C语言涵盖了ISO C99标准和GNU C的扩展特性,我想,其中让人感兴趣的,应该...

2019-02-27 12:27:47 220

原创 linux常用命令--开发调试篇

前言Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题。本文将简单介绍一下这些命令。示例程序我们用一个小程序,来帮助后面我们对这些命令的描述,程序清单cmdTest.c如下:#include<stdio.h>int test(int a,int b){ r...

2019-02-27 11:04:44 168

原创 GDB的极致运用

0. 前言GDB(GNU Debugger)是UNIX及UNIX-like下的强大调试工具,可以调试ada, c, c++, asm, minimal, d, fortran, objective-c, go, java,pascal等语言。本文以C程序为例,介绍GDB启动调试的多种方式。1.哪类程序可被调试对于C程序来说,需要在编译时加上-g参数,保留调试信息...

2019-02-27 09:12:48 115

原创 GNU C语法扩展(10)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。10、内建函数GNU C提供了大量的内建函数,其中很多是标准C库函数的内建版本,例如memcpy,它们与对应的C库函数功能相同,本文不讨论这类函数,其他内建函数的名字通常以__builtin...

2019-02-26 10:08:41 228

原创 懂了GNUC属性,C大牛非你莫属

图片发自简书App之前,小编黑鸟连续日更了十篇GNU C中特有的不同于ANSI C标准的语法扩展,这些扩展往往是普通教材中不会提及的。而恰恰是这些%1的语法影响着我们%99的人能否在众多C程序员中脱颖而出,成为同事眼中的大牛和boss眼中的红人。大家有没有这种经历,在自认为自己C语言水平已经达到某种境界的时候,兴致冲冲的拿起一本linux内核解析之类的书,准备...

2019-02-25 22:38:32 1250

原创 GNU C语法扩展(9)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。9、特殊属性声明GNU C允许声明函数、变量和类型的特殊属性,以便进行手工的代码优化和定制代码检查的方法。no return属性用于函数,表示该函数从不返回。这可以让编译器生成稍微优化...

2019-02-25 20:32:48 174

原创 GNU C语法扩展(8)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。8、当前函数名GNU C中预定义两个标志符保存当前函数的名字,__FUNCTION__保存函数在源码中的名字,__PRETTY__FUNCTION__保存带语言特色的名字。在C函数中这...

2019-02-25 16:06:14 117

原创 论架构在嵌软设计中的重要性

要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构行吗?如果没有好的架构,移植将会是一件很痛苦的事情。如果没有好的架构,复用是最大的难题,没法更大限度的复用原有的代码。如果没有好的架构,一旦驱动改了,所有的地方都要改,费时费力且很容易出错。如果没有好的架构,应用层中穿插着硬件驱动层的代码,看着会是一片混乱,逻辑不清,代码维护起来会很困难。这里总结下我...

2019-02-24 19:01:51 239

原创 妙用typeof关键字

ANSI C定义了sizeof关键字,用来获取一个变量和数据类型在内存中所占的存储字节数。GNU 扩展了一个关键字,typeof用来获取一个变量或表达式的类型。int i;typeof(i) j = 20;typeof(int *) a;int f();typeof(f()) k;在上面的代码中,因为变量i的类型为int,所以typeof(i)就等于int,typeo...

2019-02-21 08:48:44 157

原创 说说动态内存分配

当编写程序时,偶尔会不确定数组的大小(包括存储字符串的数组)。较为方便的做法是等到程序运行时再来确定数组的实际大小。在标准C中,提供了3个库函数:malloc(),calloc()和realloc()。那么他们有什么区别,分别用在什么场合呢?malloc()函数函数原型:void * malloc(size_t num_byte)参数介绍:一般来说,如果申请成功会它返...

2019-02-20 17:35:23 124

原创 3个实用shell脚本,建议收藏!

0. 编写脚本的注意事项开头加解释器:#!/bin/bash2)语法缩进,使用四个空格;多加注释说明。3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。6)写脚本一定...

2019-02-20 17:09:48 678

原创 GNU C语法扩展(7)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。七、指定初始化1、数组元素的指定初始化在标准C中,当我们定义并初始化一个数组时,教材上方法通常如下几种形式://方法1int a[10];for( i=0; i<10; i++...

2019-02-20 08:39:15 110

原创 GNU C语法扩展(6)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。6. 柔性数组(flexiblearray)柔性数组也称为零长度数组,或者零长度数组。这种数组通常在结构体当中出现,它本身并不占用空间,但是有了柔性数组意味着结构体的尺寸充满了变数。例如以...

2019-02-19 09:49:22 144

原创 电脑端连接安卓手机用Termux编程

我的目标是mobile coding,需要在Termux上搭建一个dev环境,以Go环境为例。1 Termux上安装ssh服务在搭建和配置阶段,如果直接通过Android上的软键盘操作,即便屏再大,那个体验也是较差的。我们最好通过PC连到termux上去安装和配置,这就需要我们在Termux上搭建一个sshd server。下面是步骤:$apt install opens...

2019-02-18 21:56:20 946

原创 GNU C语法扩展(5)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。5. 标号元素在标准C里,数组或者结构变量的初始化值必须以固定的顺序出现,而在GCC中,通过制定索引或者结构域名,则允许初始化值以任意顺序出现。指定数组索引的方法是在初始化值前面写[IN...

2019-02-18 14:44:15 161

原创 GNU C语法扩展(4)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。4 case范围在GCC中,你可以在case标记后面指定一个连续值,例如:caselow…high:这种写法等价于把每个值独立成一个个case标记的情况:caselow:casel...

2019-02-18 08:51:54 129

原创 GNU C语法扩展(3)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。3 变参宏标准C的变参宏在ISO C99里,一个宏可以被声明为带可变的参数个数,就像函数一样。语法如下:#define debug(format, …) fprintf(stde......

2019-02-17 19:57:04 237 2

原创 GNU C 语法扩展(2)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。2 局部标签GCC允许你在任何内嵌代码块中声明局部标签,所谓的局部标签跟普通的标签用法一样(用在goto语句或者被获取地址),只不过你只能在声明它的代码块中使用。局部标签的声明如下:_...

2019-02-17 15:18:56 133

原创 GNU C的语法扩展(1)

要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。1 语句表达式GNUC把包含在括号中的复合语句看做是一个表达式,称为语句表达式,它可以出现在任何允许表达式的地方,你可以在语句表达式中使用循环、局部变量等,原本只能在复合语句中使用。复合...

2019-02-17 13:39:38 209

原创 标准库

C语言的标准库总共分成十五个部分,每个部分用一个头描述。许多编译器都会使用扩展后的库,因此,包含的头通常会多于十五个。额外添加的头当然不属于标准库的范畴,所以,我们不能假设其他的编译器也可以支持这些头。而这些头通常提供一些针对特定机型或特定操作系统的函数,他们可能会提供对屏幕或键盘更多的操作函数,用于支持图形或窗口界面。标准头主要由函数原型、类型定义以及宏定义组成。如果我们的文...

2019-02-15 20:21:46 1691

原创 typeof关键字在内核中的运用

ANSI C定义了sizeof关键字,用来获取一个变量和数据类型在内存中所占的存储字节数。GNU 扩展了一个关键字,typeof用来获取一个变量或表达式的类型。int i;typeof(i) j = 20;typeof(int *) a;int f();typeof(f()) k;在上面的代码中,因为变量i的类型为int,所以typeof(i)就等于int,typeo...

2019-02-15 11:50:03 134

原创 让你的程序飞起来

本方法可以让C语言指令进一步接近汇编指令的执行效率,提高单片机、嵌入式系统的速度和稳定性,但编程时应采取函数化的编程法——例如使用swap()函数时,必要时加注释。0. 位运算心法&(与逻辑):有0出0,全1出1;|(或逻辑):有1出1,全0出0;~(非逻辑):空即是色,色即是空;^(异或):相异出1,相同出0;1. 如果乘上一个2的倍数数值,...

2019-02-14 11:57:08 300

原创 指定初始化的运用

我们在拜读Linux内核源代码时,是否会经常遇到一些既熟悉又陌生的C语言语法?熟悉是因为我们对Linux内核中使用的C语法绝大部分都能够看懂。陌生是指内核源代码当中的个别语法运用,我们在普通的C教材中并没有提及和说明。那么,从今天开始,小编将发表一系列文章具体阐述Linux内核中使用的那些我们那些看起来很陌生的语法。一、指定初始化1、数组元素的指定初始化在标准C中,当我们...

2019-02-14 08:43:07 181

原创 零长度数组在内核中的运用

什么叫0长度数组 零长度数组就是长度为零的数组,在内存空间中不占用存储位置。ANSI C 标准规定定义一个数组时数组的长度必须是一个常数及数组的长度在编译的时候是确定的;C99 新标准规定可以定义一个变长数组。也就是说数组的长度在编译时是未确定的在程序运行的时候才可确定甚至可以由用户指定大小。例如: int main...

2019-02-13 16:17:41 327

原创 嵌入式开发五大关注点

无论嵌入式系统多么简单或复杂,开发人员都应密切关注五个关键特性。一些是显而易见的,例如RAM和ROM使用。然而,还有其他人经常被开发人员看过,这很容易成为设计周期中的一个主要问题。系统时序询问任何开发人员系统中断或其他系统功能的最小,最大和平均执行时间,并且百分之九十的时间答案是空白的。在了解嵌入式系统的实时性能时,许多开发人员只是交叉指责并希望获得最佳效果。...

2019-02-13 16:14:42 173

原创 介绍一个有用的linux命令

你是否经常因为记不住众多的linux命令而头疼不已?你是否因为记不住众多的命令参数而头疼不已?或许有人说我可以用谷哥度娘啊?但是不是感觉他们的检索效率又非常低下呢?或许有人说我可以用man命令啊?但是不是通过man命令显示的结果又不易阅读呢?。今天我就是来解救你们的!!!tldr命令正是解决这一痛点。tldr是什么?它的中文名叫“GitHub页翻译”,是 “一个简洁...

2019-02-12 13:13:24 117

原创 C与C++的差异

c语言是结构化模块化的语言,是面向过程的程序设计。c++既可以面向过程,也可以面向对象的程序设计(增加了面向对象机制)。c语言的头文件都有.h后缀名,c++中用户自己编制的头文件带.h,系统提供的头文件无后缀名,c++兼容c的头文件。c语言的结构体struct只能包含数据成员,c++的类可以包含数据成员和成员函数。c++中使用usingnamespace作为命名空间,当含有系统头文...

2019-02-11 21:24:36 330

原创 动态分配那些事儿

当编写程序时,偶尔会不确定数组的大小(包括存储字符串的数组)。较为方便的做法是等到程序运行时再来确定数组的实际大小。在标准C中,提供了3个库函数:malloc(),calloc()和realloc()。那么他们有什么区别,分别用在什么场合呢?malloc()函数函数原型:void * malloc(size_t num_byte)参数介绍:一般来说,如果申请成功会它返...

2019-02-09 08:38:12 120

原创 快速上手Makefile

一、WhatMakefile是一个规定了怎么去编译和链接程序的脚本文件,在执行make命令时会执行该文件,window环境下的IDE,如visual studio已经集成了该功能,不需要关心程序的编译规则,在linux下做C/C++开发时经常用到,说到这里首先要知道一个工具make。make是一个解释Makefile中指令的命令工具,常见的IDE都集成了这个工具。目前cento...

2019-02-08 08:37:27 189 1

原创 2019备考[嵌入式系统设计师]之“电路基础”

一、引言在嵌入式系统的硬件设计中,嵌入式微处理器和外围设备接口技术是两个最为核心的部分,然而支撑这个两个部分的基础确实电子电路的基本技术。任何一个嵌入式系统的设计都离不开电子电路的设计。作为嵌入式系统设计师的考试,对这方面的考查或多或少有几题,但在整个考试题目中所占的比例不多,但这并不能说明以后的考试就不会考查这方面的知识,毕竟这个部分是一个不可缺少的基础。同时,在嵌入式的一些基...

2019-02-02 10:09:54 352

先中后层序遍历算法图解及C实现代码,区分递归和非递归两种写法

先序遍历中序遍历后序遍历图解

2024-03-09

实现邻接矩阵存储图的深度优先遍历

C语言实现邻接矩阵存储图的深度优先遍历。

2023-02-09

该程序能求解n皇后问题,即在n*n方格棋盘上放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线

编写一个程序,求解n皇后问题,即在n*n方格棋盘上放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。其中: 1. 皇后个数n由用户输入,其值不能超过20,输出所有的解。 2.采用类似于栈求解迷宫问题的方法

2023-02-09

ctags-5.8源码包

最新ctags-5.8源码包,用于和vim搭配使用,实现在vim中通过点击函数名迅速查找函数的定义。

2022-09-05

计算机3级中关于嵌入式知识的详尽总结

计算机3级中关于嵌入式知识的详尽总结

2022-03-06

信息系统项目管理师考试论文范文集

软考高级中的大头就是论文了,必须得有大量项目经验,否则只能依靠背记常考方向的论文范文,有的放矢的去准备下午的论文。此资源提供了历年来的论文方向和范文供大家背记和准备。

2022-03-04

软考高项考前必须要会做的百题精讲

软考高项考前必须要做的近200道题,大数据分析自软考开考以来历年真题中出现频次最高的知识点,并精准预测2022年可能要考察的知识点集合,是您备考的重要参考资料。

2022-03-04

sscom_v5.13.1.rar

串口调试助手

2021-09-30

vspd_6.9.zip

虚拟串口工具VSPD

2021-09-30

华为官网精选案例(案例和论文参考学习).pdf

华为公司针对各个场景下的解决方案,是案例分析和论文写作的重要参考资料,特别适合无工作经验,论文写作缺少素材的同学。

2021-08-02

网络规划设计师历年真题09-19年.zip

关于软考网络规划师的历年真题,考试必须有的放矢,而历年真题是备考的绝佳资料。绝对的经验总结,亲历很多次考试,发现软考的真题重复率还是蛮高的。

2021-08-02

某赛网论文写作培训课件.zip

关于软考架构师的论文写作方法和技巧,涵盖架构师各个主题,备考论文必备。

2021-08-02

一百篇架构师论文范例(备考必备,备考必背!).rar

关于软考架构师的100篇论文范例,涵盖架构师各个主题,是备考架构师论文的不二选择,挑选几篇近两年热门的主题熟背熟写,方能在考试中2小时内完成论文,因为根本没时间现场考虑构思,只有行文流水才能完成2500字大关。血的教训!!!

2021-08-02

系统架构师历年真题(2009-2018)解析.zip

2009年到2018年软考高级系统架构师的真题和详细解析。考试必须有的放矢,而历年真题是绝佳的备考资料,没有之一!

2021-08-02

架构师考试考前模拟卷20套.zip

适合备考软考高级系统架构师的同学,用于检测或熟悉自己复习程度的。考卷为2020年某赛培训机构内部试题,具有一定的参考性和实用价值。

2021-08-02

2021年系统架构复习笔记(按章节).docx

复习笔记涵盖了近10年架构师考试历年真题所有知识点,并补充了XS培训班辅导资料内容,适合有一定基础但没有太多时间去翻阅教材、总结归纳的同学,帮你快速获得通过考试所需的知识储备。

2021-03-18

系统分析师核心考点归纳.pdf

主要总结了近10年来软考高级系统分析师和架构师历年真题和XS培训视频包含的所有知识点,适合有一定基础但没有太多时间阅读教程和总结背记历年真题的同学快速达到参加考试所需的知识储备。

2021-03-18

软考学习笔记(重要).docx

主要总结了近10年来软考嵌入式系统设计师历年真题所有考点,免去自己购买真题和总结背记的时间花销,适合有一定嵌入式基础,又没有太多时间完整看完教程和真题的同学。

2021-03-18

操作系统知识.pdf

计算机软件能力和技术测试考试中的操作系统知识,软考高级中系统分析师和架构师的必备知识点,需要的同学赶紧下载吧!!!!

2020-08-12

自写嵌入式系统设计师考试笔记.doc

我是去年考过的计算机技术与软件专业技术资格(水平)考试中的中级嵌入式系统设计师,成绩也不错,这是我看书,培训中总结的笔记,很重要,现在供大家下载。

2020-07-28

历年真题12-18.zip

计算机技术与软件专业技术资格(水平)考试2012年至2018年的下午考题,有需要的同学可以下载下来看看。做真题真的很重要的,重要的事情说3遍:做真题真的很重要的。做真题真的很重要的。做真题真的很重要的!

2020-07-28

RIO包-用于网络编程的健壮读写函数.md

它会自动处理你上下文中所述的不足值,提供了方便/健壮和高效的IO。 本代码分别提供了无缓冲和带缓冲的输入输出函数: 无缓冲:rio_readn和rio_writen 带缓冲:rio_readinitb、rio_readlineb、rio_readnb

2020-03-26

picgo_typora.zip

内含2个安装包,一个是Picgo-2.2.0 一个是typora。二者加起来可以方便的在利用typora编写markdown语法的文章时插入图片,便于多平台传递、查看markdown文章。

2020-03-25

一文教你如何构建静态链接库.md

主要描述如何构建自己的静态库。话说ISOC99有自己的一系列标准C函数库,例如我们熟悉的libc.a(包含标准I/O函数、字符串操作函数和整数数学函数)和libm.a(浮点数数学函数),可供我们在使用gcc编译工具编译程序时调用。那么,如果我们在日常学习或项目开发中积累了许多好的函数,希望日后在其他项目中能够复用时,我们又该如何去保存他们呢?今天我就告诉大家怎么办?

2020-03-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除