结构体类型

高通8x25平台display模块总结

北战南征 提交于 2019-12-03 10:22:58
一、 概述 1.1 简介 本文档主要包括 LCD 模块的驱动流程分析、 Framebuffer 相关知识、 Gralloc 等相关内容,以及 LCD 调试的一些经验和相关 bug 的分析和讲解。 1.2 开发环境 Android:4.0 Kernel: Linux3.0 Ubuntu: 需要 10.04 以及之后的版本 Gcc: 4.4.3 toolchain 1.3 硬件平台 Msm8x25,pmic(pm8029) 1.4 操作系统 Android:4.0, Kernel: 3.0 1.5 开发工具 VIM,SourceInsight,JTAG,ADB 二、 LCD 驱动流程分析 2.1 帧缓冲 2.1.1 帧缓冲概念 帧缓冲( framebuffer )是 Linux 系 统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关系物 理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。对于帧缓冲设备而言,只要在显示缓冲区中与显示点对应的区域写入颜色值,对应的颜 色会自动在屏幕上显示。帧缓冲为标准字符设备,主设备号为 29 ,对应于 /dev/fbn 。 2.1.2 fb_info 结构体 帧缓冲设备最关键的一个数据结构体是 fb_info 结构,为了便于记忆,简称 FBI

Go 结构体的使用

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 07:40:16
结构体是 用户定义的类型 ,表示若干个字段(Field)的集合。有时应该把数据整合在一起,而不是让这些数据没有联系。这种情况下可以使用结构体。 例如,一个职员有 firstName 、 lastName 和 age 三个属性,而把这些属性组合在一个结构体 employee 中就很合理。 结构体的声明基础 type Employee struct { firstName string lastName string age int }  在上面的代码片段里,声明了一个结构体类型 Employee ,它有 firstName 、 lastName 和 age 三个字段。通过把相同类型的字段声明在同一行,结构体可以变得更加紧凑。在上面的结构体中, firstName 和 lastName 属于相同的 string 类型,于是这个结构体可以重写为:  type Employee struct { firstName, lastName string age, salary int } 上面的结构体 Employee 称为 命名的结构体(Named Structure)。我们创建了名为 Employee 的新类型,而它可以用于创建 Employee 类型的结构体变量。 声明结构体时也可以不用声明一个新类型,这样的结构体类型称为 匿名结构体(Anonymous Structure)。 var

C++中结构体与类到底有区别和相同的地方

匿名 (未验证) 提交于 2019-12-03 00:36:02
#include<iostream> using namespace std; typedef struct DemoS{ private: char c; char x; int y; public: DemoS(){} DemoS(char c,char x,int y):c(c),x(x),y(y) { //cout<<this<<"有参构造"<<endl; } inline void setX(char x) { this->x=x; } inline void printX(){ cout<<this->x<<endl; } ~DemoS() { //cout<<this<<"析构函数"<<endl; } }DemoS; class DemoC{ private : char c; char x; int y; public: DemoC(){} DemoC(char c,char x,int y):c(c),x(x),y(y) { //cout<<this<<"有参构造"<<endl; } inline void setX(char x){ this->x=x; } inline void printX() { cout<<this->x<<endl; } ~DemoC(){ // cout<<this<<"析构函数"<<endl; } }; int main(void

SystemVerilog语言简介

匿名 (未验证) 提交于 2019-12-03 00:25:02
SystemVerilog是一种 硬件描述和验证语言 (HDVL),它 基于IEEE1364-2001 Verilog硬件描述语言(HDL),并对其进行了扩展,包括扩充了数据类型、结构、压缩和非压缩数组、 接口、断言等等 ,这些都使得 SystemVerilog在一个更高的抽象层次上提高了设计建模的能力 。SystemVerilog由Accellera开发,它 主要定位在芯片的实现和验证流程上,并为系统级的设计流程提供了强大的连接能力 。下面我们从几个方面对SystemVerilog所作的增强进行简要的介绍,期望能够通过这个介绍使大家对SystemVerilog有一个概括性的了解。 1. 接口(Interface) Verilog模块之间的连接是通过模块端口进行的。为了给组成设计的各个模块定义端口,我们必须对期望的硬件设计有一个详细的认识。不幸的是,在设计的早期,我们很难把握设计的细节。而且,一旦模块的端口定义完成后,我们也很难改变端口的配置。另外,一个设计中的许多模块往往具有相同的端口定义,在Verilog中,我们必须在每个模块中进行相同的定义,这为我们增加了无谓的工作量。 SystemVerilog提供了一个新的、高层抽象的模块连接,这个连接被称为 接口( Interface ) 。接口在关键字 interface 和 endinterface 之间定义,它独立于模块

C语言结构体小练习

匿名 (未验证) 提交于 2019-12-03 00:22:01
#include <stdio.h> #include <stdbool.h> /* 功能:根据当天日期输出明天的日期 时间:2018-06-05 //此程序无输入错误检测 */ //定义一个日期类型 形如2018-06-05 struct date { int year ; int month ; int day ; }; //判断某年是否为闰年 bool isLeap ( struct date d ); //返回某月的总天数 int numberOfDays ( struct date d ); int main ( int argc , char const * argv []) { struct date today , tomorrow ; printf ( "输入今天的日期:(year mm dd)" ); scanf ( "%i %i %i" ,& today . year ,& today . month ,& today . day ); //如果当天不是本月的最后一天 if ( today . day != numberOfDays ( today ) ){ tomorrow . day = today . day + 1 ; tomorrow . month = today . month ; tomorrow . year = today . year ;

struct和typedef struct的区别

匿名 (未验证) 提交于 2019-12-03 00:22:01
分三块来讲述:   1 首先: //注意在C和C++里不同     在C中定义一个结构体类型要用typedef:      typedef struct Student     {     int a;     }Stu;     于是在声明变量的时候就可:Stu stu1;( 如果没有typedef就必须用struct Student stu1;来声明)     这里的Stu实际上就是struct Student的别名。 Stu==struct Student      另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu stu1;)      typedef struct     {     int a;     }Stu;     但在c++里很简单,直接      struct Student     {     int a;     };           于是就定义了结构体类型Student,声明变量时直接Student stu2; =========================================== ===========================================   2.其次:     在c++中如果用typedef的话,又会造成区别:          }stu1;//  

自定义类型――结构体

匿名 (未验证) 提交于 2019-12-03 00:21:02
一.结构体概念 二.结构体的声明 struct tag//tag需要做到见名知意,可以省略,但不建议省略。起到了标签的作用 { member-list;//成员列表,不可省略,C中不可以定义孔结构体 }variable-list;//变量列表,建议省略,结构体变量按需定义 例如:描述一个学生信息 结构体成员变量可以是任何类型,甚至是其他结构体类型。 特殊的声明:在定义结构体的时候可以不完全的声明 struct //匿名结构体类型,省略了标签tag,没有错误但是一般情况下不建议这样做,容易混淆 { int a; char b; float c; }x; struct { int a; char b; float c; }a[20],*p; 试试下面这样可以吗 p = &x; 三.结构体成员的访问 例如: 假如得到的是一个结构体指针,就可以用" . "或"->"操作符来访问结构体成员: struct Stu { char name[20]; int age; }; struct Stu s; void print(struct stu* ps) { printf("name = %s age = %d\n", (*ps).name, (*ps).age); printf("name = %s age = %d\n", ps->name, ps->age); } 四.结构体的自引用 /

C中为什么不能用==比较字符串?

匿名 (未验证) 提交于 2019-12-03 00:14:01
通常的回答是,==比较的不是字符串的内容,它是在比较指针。或者说,==(或者!=)仅比较两个字符串的首地址,而不会比较字符串每个字符。 那其实接下来应该问的问题是,为什么会只比较首地址呢? 因为早期的C语言只能使用标量。 简单的说,标量scalar就是指char, int, double, enum等数值类型,以及指针。像数组、结构体、共同体这样将多个标量组合起来的类型,被称为聚合类型aggregate。 字符串其实就是char类型的数组,也就是说它不是标量,因此在C中不能用==比较。 在ANSI C中,追加了几个功能: . 结构体的一次性赋值 . 将结构体作为函数参数值进行传递 . 将结构体作为函数返回值返回 . auto变量的初始化 只涉及结构体;字符串还是不能用==比较的。 来源:博客园 作者: freshair_cn 链接:https://www.cnblogs.com/freshair_cnblog/p/11652985.html

Go 面向对象之结构体

匿名 (未验证) 提交于 2019-12-02 23:57:01
#### Go 面向对象之结构体最近有四天没更新公众号,有一些事情耽误了,生活就是这样,总会一些事情让人措不及防; ***山浓水浅,坐看流年***1. Go 也支持面向对象编程(OOP) 但是它和传统的面向对象编程还是有一些区别,并不是纯粹的面向对象编程; 2. Go 中没有类(class), Go 中struct 和其它编程语言中的类有同等地位,所以我们可以理解Go 是基于struct 来实现OOP; 3. Go 面向对象很简洁,没有传统OOP 的继承,方法重载,构造函数等等; 4. Go 面向对象仍有继承,封装,多态的特性,只是它的实现与传统的OOP语言不同; ##### 结构体与结构体变量(实例/对象)的关系图 ---说明: 1. 将一类事物的特性提取出来(比如猫类),形成一个新的数据类型就是一个结构体; 2. 通过这个结构体,可以创建多个变量(实例/对象); 3. 事物可以是猫类,也可以是其它的类...; 案例: package main import "fmt" // 定义一个结构体,类似于类 // 将Cat 的各个字段/属性,放入到结构体中 type Cat struct { Name string Age uint Color string Hobby string } func main(){ // 声明一个Cat 变量,也就是实例 var a1 Cat a1

指针数组与数组指针,结构体数组与结构体指针

匿名 (未验证) 提交于 2019-12-02 23:49:02
定义: int *p[size] //表示数组存的是指针,有size个指针数据 定义: int (*p)[size] //数组指针,存储size个int类型的数据 指针函数 指针函数是一个函数,该函数返回的是一个指针; 函数指针是一个指针,该指针指向一个函数; #include <stdio.h> int* getIntPoint(const int a) //指针函数,是一个函数 返回一个指针; { int *p = nullptr ; p = new int ; *p = a; return p ; } int main(int argc, char const *argv[]) { int *(*p)(int) = getIntPoint ; //函数指针,该指针指向一个函数; int* pInt = p(5); //使用函数指针; printf("%d\n",*pInt); delete pInt ; return 0; } 申明结构体数组: 结构体名 数组名【size】 结构指针变量说明的一般形式为: struct 结构体名 *结构体指针变量名 struct student *p = &Boy; //假设事先定义了 struct student Boy;