c语言中 t是什么意思os什么意思

OS_TASK_SW,&OS_CPU_IRQ_ISR,OSIntCtxSw,OS_CPU_FIQ_ISR,OSStarHighRdy
下面是关于这个几个函数的汇编,处理是基于ARM的S3C2410,其中的一些有关汇编的知识在
这篇博文中已经讲到了,但是对于这几个函数的一些注解,自己也有一些不懂的地方,并且标注出来了,希望如果有知道的人,看到还望他不吝赐教。
OS_TASK_SW
是一个普通的任务级的任务调度
;以下是定义全局变量的定义
;IMPORT伪操作告诉编译器当前的符号不是在本源文件中定义的,
;而是在其他源文件中定义的,在本源文件中可能引用该符号,
;而且不论本源文件是否实际引用该符号,该符号都将被加入到本源文件的符号表中。
addr_OSTCBCur
DCD OSTCBCur
;当前任务TCB指针
OSTCBHighRdy
addr_OSTCBHighRdy
DCD OSTCBHighRdy
;当前最高优先级的TCB指针
addr_OSPrioCur
DCD OSPrioCur
;当前任务优先级
OSPrioHighRdy
addr_OSPrioHighRdy DCD OSPrioHighRdy
;新就绪最高优先级任务
OS_TASK_SW
只是一个标号,相当于函数名
sp!,{r0-r12}
MRS r4,CPSR
MRS r4,SPSR
;最高优先级的值放入当前优先级的值中
LDR r4,addr_OSPrioCur
LDR r5,addr_OSPrioHighRdy
LDRB r6,[r5]
STRB r6,[r4]
;把此时的sp地址作为(旧任务的栈顶值),说明入栈需要保存的数据保存结束
LDR r4,addr_OSTCBCur
LDR r5,[r4]
STR sp,[r5]任务控制块的第一个成员就是OS_STK *OSTCBSTKPT,专门用来存放栈顶
;把此时最高优先级的任务(新任务)的栈顶指针放入sp中
LDR r6,addr_OSTCBHighRdy
LDR r6,[r6]
LDR sp,[r6]
;把OSTCBCur的值修改为新就绪最高优先级任务的控制块地址
;并且进行出栈,则开始执行此新任务,完成任务调度功能
STR r6,[r4]r4指向当前任务控制块指针的地址,r6是最高优先级任务控制块指针
;按照入栈相反的顺序出栈所保存的数据,此时的sp已经是最高优先级任务的栈顶了
LDMFD sp!,{r4}
MSR SPSR_cxsf,{r4}
LDR sp,{r4}
MSR CPSR_cxsf,{r4}
LDMFD sp!,{r0-r12,lr,pc}
OS_CPU_IRQ_ISR
普通中断处理函数方式,
;整个过程方式是:在产生中断时,必须快速进入中断,避免中断丢失,
;当保存了最主要的中断信息后,再次回到SVC模式中存储正在执行任务的信息。
;结束后,在回到IRQ模式中,执行中断服务程序,执行完成后,再次返回SVC模式。
;OS_CPU_IRQ_ISR函数
;以下是部分定义
0xc0用于禁止FIR和IRQ
0x80用于禁止IRQ
0x40用于禁止FIR
SVC32_MODE
0x13处理器模式为32位SVC模式
FIQ32_MODE
0x11处理器模式为32位FIQ模式
IRQ32_MODE
0x12处理器模式为32位IRQ模式
;IRQ中断处理函数
OS_CPU_IRQ_ISR标号,可以在C语言程序中调用此函数
;首先禁止CPU的FIQ中断,并切换到IRQ中断模式
CPSR_c,#(NO_INT|IRQ32_MODE)
SP!,{R1-R3};将R1-R3通用寄存器存入IRQ模式下的栈(SP_IRQ)中
MOV R1,SP①
ADD SP,SP,#12???为什么留出3个字的空间
SUB R2,LR,#4获取返回值??是因为ARM预读指令的原因吗
MRS R3,SPSR②读取SPSR寄存器
MSR CPSR_c,#(NO_INT|SVC32_MODE)切换到SVC模式
存储任务的上下在SVC模式的栈空间中
STMFD SP!,{R2}存储返回地址
STMFD SP!,{LR}存储LR寄存器的值
STMFD SP!,{R4-R12}存储R4-R12通用寄存器的值
LDMFD R1!,{R4-R6}因为在①出获得了SP的值,可以把IRQ的寄存器R1-R3的值取出来
STMFD SP!,{R4-R6}把IRQ模式中的R1-R3原始值入栈到SVC模式栈中
STMFD SP!,{R0}将R0入SVC模式栈中
;将全局变量OSTntNesting自动加1,也可以执行OSIntEnter()代替
LDR R0,OS_IntNesting
LDRB R1,[R0]只传递后8位,难道是可以提高效率????
ADD R1,R1,#1
STRB R1,[R0]
;如果条件满足(OSIntNesting==1)即,只有这一个中断,
;将设置当前任务控制块成员变量OSTCBCur-&OSTCBStrPtr=SP
CMP R1,#1R1与1比较,结果会改变状态寄存器
BNE OS_CPU_IRQ_ISR_1如果R1不等1则跳转
LDR R4,OS_TCBCur
LDR R5,[R4]
STR SP,[R5]第一个成员变量是OSTCBCur-&OSTCBStrPtr = SP
OS_CPU_IRQ_ISR_1
;返回到IRQ中断,使能FIQ中断,执行中断子程序OS_CPU_IRQ_ISR_Handler()
MSR CPSR_c,#(NO_IRQ|IRQ32_MODE)
LDR R0,OS_CPU_IRQ_IRQ_Handler
MOV LR,PC因为LR在执行BL子程序调用指令时,作为R15的备份
;当中断服务程序执行结束后,返回这里,CPU的状态切换为SVC模式
MSR CPSR_c,#(NO_INT|SVC32_MODE)
;调用OSIntExit()函数,引发新的调用
LDR R0,OS_IntExit
;读取新任务的上下文信息
LDMFD SP!,{R4}
MSR SPSR_cxsf,R4
LDMFD SP!,{R0-R12,LR,PC}^
;在特权模式下(SVC)下,&S&或者&^&的作用就是使指令在执行时,同时从SPSR到CPSR的复制,
;达到恢复状态寄存器。
OSIntCtxSw
;中断级任务调度切换函数
;由于ARM有各种不同的模式,因此在普通模式下的任务切换和中断后的任务切换是不同的
OSIntCtxSw
LDR R0,OS_TaskSwH执行特殊的钩子函数①OSTaskSwHook()
;将全局变量OS_PrioCur的值修改为OS_PrioHighRdy
LDR R4,OS_PrioCur
LDR R5,OS_PrioHighRdy
LDRB R6,[R5]
STRB R6,[R4]
;将全局变量OS_TCBCur的值修改为OS_TCBHighRdy
LDR R4,OS_TCBCur
LDR R5,OS_TCBHighRdy
LDR R6,[R5]
STR R6,[R4]
;读出新任务的堆栈指针SP = OSTCBHighRdy-&OSTCBStrPtr
LDR SP,{R6}
;恢复新任务的上下文内容,然后自动跳转,因为PC值变了
LDMFD SP!,{R4}
MSR SPSR_cxsf,R4
LDMFD SP!,{R0-R12,LR,PC}^
;子函数①OSTaskSwHook()由移植此系统的用户添加代码,
;默认为空,当用户认为有必要执行某些特殊功能时,在函数中添加相应的代码
OS_CPU_FIQ_ISR
FIQ中断与普通中断比较类似,但是更为紧急,能够中断IRQ。
OS_CPU_FIQ_ISR
;为什么不手动进入FIQ模式,IRQ模式是手动进入的
STMFD SP!,{R1-R4}将会使用到的寄存器压入FIQ栈中
MOV R1,SP②读取FIQ的SP指针
SUB R2,LR,#4①调整LR,以得到PC返回值
MRS R3,SPSR读取SPSR_fiq的值
AND R4,R4,#0x1F提取SPSR后5位
CMP R4,#IRQ32_MODE测试FIQ是否在IRQ模式下发生的,即是否中断嵌套了
BEQ OS_CPU_FIQ_ISR_2如果是,则跳到OS_CPU_FIQ_ISR;如果不是直接执行FIQ中断处理
MSR CPSR_c,#(NO_INT|SVC32_MODE)将当前CPU修改为SVC模式
保存上下文内容到任务栈中
STMFD SP!,{R2}将PC放入SVC模式栈中,在①出,R2已经得到PC值
STMFD SP!,{LR}将LR保存到SVC模式中
LDMFD R1!,{R5-R8} 将FIQ栈中的R1-R4存储到SVC栈中,在②处,已经获得FIQ栈指针
STMFD SP!,{R5-R8}
STMFD SP!,{R0}
STMFD SP!,{R3}将SPSR_fiq存储到SVC栈中
LDR R0,OS_IntN中断嵌套次数加1,
LDRB R1,[R0]
ADD R1,R1,#1
STRB R1,[R0]
;如果条件满足OS_IntNesting=1
;设置当前任务的任务控制块成员变量OSTCBCur-&OSTCBStrPtr = SP
BNE OS_CPU_FIQ_ISR_1
OS_CPU_FIQ_ISQ_1
MSR CPSR_c,#(ON_INT|FIQ32_MODE)进入FIQ模式
ADD SP,SP,#16
修改FIQ栈指标(为什么要修改)
LDR R0,OS_CPU_FIQ_ISR_H调用中断服务程序
;读取新任务的上下文内容,开始执行新任务
LDMFD SP!,{R4}
将新任务的cpsr出栈
MSR SPSR_cxsf,R4
LDMFD SP!,{R0-R12,LR,PC}^由于PC值改变,相当于return了。
;FIQ中断将中断IRQ中断
OS_CPU_FIQ_ISR_2
将IRQ的上下文存储到FIQ的栈中
STMFD SP!,{R0-R7,LR}
中断次数加一,相当于执行OSIntEnter()函数
LDR R0,OS_IntNesting
LDRB R1,[R0]
ADD R1,R1,#1
STRB R1,[R0]
LDR R0,OS_CPU_FIQ_ISR_Handler
;全局变量OSIntNesting自动减一,此处没有必要执行OSIntExit()函数
;因为返回到IRQ模式下时将调用此函数,另外,在中断嵌套中不允许引发新的调度
LDR R0,OS_IntNesting
LDR R1,[R0]
SUB R1,R1,#1
STRB R1,[R0]
;恢复IRQ模式下的上下文内容,然后返回到IRQ模式执行IRQ中断
LDMFD SP!,{R0-R7,LR}
LDMFD SP!,{R1-R4}
SUBS PC,LR,#4
OSStarHighRdy
;运行最高优先级任务
;GLOBAL 与 EXPORT 相同,EXTERN 与 IMPORT 相同
IMPORT OSTCBCur
addr_OSTCBCur
DCD OSTCBCur
IMPORT OSTCBHighRdy
addr_OSTCBHighRdy
DCD OSTCBHighRdy
EXPORT OSStarHighRdy
OSStarHighRdy
LDR R4,addr_OSTCBC获取当前任务TCB的地址
LDR R5,addr_OSTCBHighR获取最高优先级的TCB地址
LDR R5,[R5]
LDR SP,[R4]
LDMFD SP!,{R4}
MSR SPSR_cxsf,R4
LDMFD SP!,{R4}
MSR CPSR_cxsf,R4
LDMFD SP!,{R0-R12,LR,PC}
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场嵌入式实时操作系统_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&嵌入式实时操作系统本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
嵌入式实时操作系统(Embedded Real-time Operation System,RTOS)。是“用于控制、监视或者辅助操作机器和设备的装置”外文名Embedded Real-time Operation SystemIEEE国际
Embedded Real-time Operation System,简写为(RTOS).当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的。
注:在工业控制、 军事设备、 航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用。我们常常说的嵌入式操作系统都是嵌入式。比如、eCOS和Linux、HOPEN OS。故对嵌入式实时操作系统的理解应该建立在对的理解之上加入对响应时间的要求。是“C”(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。
注:IEEE是国际。以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。随着计算机技术的迅速发展和芯片制造工艺的不断进步,的应用日益广泛:从民用的电视、手机等电路设备到军用的飞机、坦克等武器系统,到处都有嵌入式系统的身影。在嵌入式系统的应用开发中,采用嵌入式(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。这已逐渐成为的一个发展方向。从1981年Ready System发展了世界上第1个商业嵌入式实时内核(VRTX32),到今天已经有近20年的历史。20世纪80年代的产品还只支持一些16位的,如68k,8086等。这时候的RTOS还只有内核,以销售为主。当时的产品除VRTX外,还有IPI公司的MTOS和80年代末ISI公司的PSOS。产品主要用于军事和电信设备。进入20世纪90年代,的设计思想,如设计技术和思想,开始渗入RTOS领域。老牌的RTOS厂家如Ready System(在1995年与Microtec Research合并),也推出新一代的 VRTXsa实时内核,新一代的RTOS厂家Windriver推出了Vxwork。另外在这个时期,各家公司都有力求摆脱完全依赖第三方工具的制约,而通过自己收购、授权或使用免费工具链的方式,组成1套完整的开发环境。例如,ISI公司的Prismt、著名的Tornado(Windriver)和老牌的Spectra(VRTX开发系统)等。
进入20世纪90年代中期,互联网之风在北美日渐风行。网络设备制造商、终端产品制造商都要求RTOS有网络和图形界面的功能。为了方便使用大量现存的,他们希望RTOS厂家都支持标准的API,如POSIX, Win32等,并希望RTOS的开发环境与他们已经熟悉的UNIX,Windows一致。这个时期代表性的产品有Vxwork,QNX, Lynx和WinCE等。可以看出,进入20世纪90年代后,RTOS在中的主导地位已经确定,越来越多的工程师使用RTOS,更多的新用户愿意选择购买而不是自己开发。我们注意到,RTOS的技术发展有以下一些变化:
1. 因为新的处理器越来越多,RTOS自身结构的设计更易于移植,以便在短时间内支持更多种微处理器。
2.开放源码之风已波及RTOS厂家。数量相当多的RTOS厂家出售RTOS时,就附加了源程序代码并含生产版税。
3. 后PC时代更多的产品使用RTOS,它们对实时性要求并不高,如手持设备等。的WinCE,Plam OS, Java OS等RTOS产品就是顺应这些应用而开发出来的。
4. 电信设备、要求的高可靠性,对RTOS提出了新的要求。Enea公司的OSE和WindRiver 新推出的Vxwork AE对支持HA(高可用性)和等特点都下了一番功夫。
5. Windriver收购了ISI,在RTOS市场形成了相当程度的垄断,但是由于Windriver决定放弃PSOS,转为开发Vxwork与PSOS合二为一版本,这便使得PSOS用户再一次走到重新选择RTOS的路口,给了其他RTOS厂家1次机会。
6. 嵌入式Linux已经在消费电子设备中得到应用。韩国和日本的一些企业都推出了基于嵌入式Linux的手持设备。嵌入式Linux得到了相当广泛的半导体厂商的支持和投资,如Intel和 Motorola。未来RTOS可能划分为3个不同的领域:
1. 系统级:指RTOS运行在1个小型的计算机系统中完成实时的控制作用。这个领域将主要是微软与Sun竞争之地,传统上Unix在这里占有绝对优势。Sun通过收购,让他的Solaris与 Chrous os(原欧洲的1种RTOS)结合,微软力推NT的嵌入式版本&Embedded NT&。此外,嵌入式Linux将依托源程序码开放和软件资源丰富的优势,进入系统级RTOS的市场。
2. 板级:传统的RTOS的主要市场。如Vxwork, PSOS, QNX, Lynx和VRTX的应用将主要集中在航空航天、电话电讯等设备上。
3. SOC级(即):新一代RTOS的领域:主要应用在消费电子、互联网络和手持设备等产品上。代表的产品有Symbian 的Epoc、ATI 的Nucleus, Express logic 的Threadx。老牌的RTOS厂家的产品VRTX和Vxwork 也很注意这个市场。
从某种程度讲,不会出现1个标准的RTOS(像微软的Windows在桌面系统中的地位一样),因为嵌入式应用本身就极具多样性。在某个时间段以及某种行业,会出现1种绝对领导地位的RTOS,比如今天在宽带的数据通信设备中的Vxwork和在亚洲手持设备市场上的WinCE就是一例子。但是,这种垄断地位也并不是牢不可破的,因为在某种程度上用户和合作伙伴更愿意去培养1个新的竞争对手。比如,Intel投资的Montivista和Motorola投资的Lineo,这两家嵌入式Linux系统,就是说明半导体厂商更愿意看到1个经济适用的、开放的RTOS环境。中国将是世界上最大的RTOS市场之一。因为中国有着世界上最大的电信市场。据信息产业部预计,在未来2~3年内,中国将是世界上最大的手机市场(每1部手机都在运行1个RTOS)。
这样庞大的电信市场就会孕育着大量的电信设备制造商,这就造就了大量的RTOS和开发工具市场机会。目前至2013年,中国的绝大多数设备制造商在采用RTOS时,首先考虑的还是国外产品。
目前,在中国市场上流行的RTOS主要有Vxwork, PSOS, VRTX, Nucleus,QNX和WinCE等。由于多数RTOS是嵌入在设备的控制器上,所以多数用户并不愿意冒风险尝试1种新的RTOS。
但是我们同时也注意到,目前 RTOS在中国市场的销售额还很小,这主要是2个原因:
1.中国设备制造商的规模普遍还无法与国外公司相比,开发和人员费用相对还较高,所以RTOS对于中国用户来讲是比较贵的。
2.多数国内用户还没有开始购买RTOS的版税,其主要原因有:产品未能按计划批量生产,没有交版税的意识。应该注意,大多数二进制的RTOS必须在产品量产时交版税,或者按数量买或者与厂家讨论一次性买断,而由厂家直接发给你授权协议书。据国外某家RTOS厂家称,他们年收入的30%来自版税。μTenux[1]是一款开源免费的硬实时嵌入式操作系统,开发团队来自大连,主要针对ARM Cortex M0-M4系列的微控制器。其内核采用上世纪80年代就出现的μT-Kernel。在全球嵌入式最发达的日本,μT-Kernel拥有60%的占有率。同时tecoss中国开源社区还推出了Tenux,针对ARM Cortex的R系列和A系列。目前,悠龙软件是世界知名公司ARM的合作伙伴,还是Ti、ATMEL、ST、T-Engine、Neusoft、Tianfusoftwarepark、TEG、Parasoft etc.芯片厂商的合作伙伴。[1]
目前,官方提供的μTenux稳定版代码为V1.5.00r160。[1]是一个嵌入式实时操作系统,没有考虑在通用计算机/服务器上与、、竞争。
DJYOS操作系统是以事件为核心进行调度的,这种调度策略使程序员可以按人类认知事物的习惯而不是计算机的习惯来编程。
普通操作系统中,调度是以线程为核心的,事件被作为线程的数据,标榜为“事件触发”的软件模型,也是由线程在一旁候着,待特定事件发生时线程恢复运行并把它作为输入数据加以处理。
以事件为核心的调度,则像设备和内存一样,把线程虚拟机作为处理事件所需要的资源看待,当某事件需要处理时,分配或者创建一个线程虚拟机给该事件,并启动该线程虚拟机处理事件。
在嵌入式领域,要与非实时操作系统如、竞争,以及实时操作系统如、等竞争。
DJYOS的目标,是改变中国无(有影响力的)操作系统局面,在不久的将来,世界上流行的操作系统中,有一个来自中国。是美国WindRiver公司的产品,是目前领域中应用很广泛,市场占有率比较高的。
VxWorks由400多个相对独立、短小精悍的目标模块组成,用户可根据需要选择适当的模块来裁剪和配置系统;提供基于优先级的任务调度、任务间同步与通信、、和等功能,内建符合POSIX(可移植)规范的内存管理,以及多处理器控制程序;并且具有简明易懂的,在核心方面甚至可以微缩到8 KB。μC/OS-II是在μC-OS的基础上发展起来的,是美国专家Jean J.Labrosse用C语言编写的一个结构小巧、的多任务实时内核。μC/OS-II能管理64个任务,并提供任务调度与管理、、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。是一种优秀的嵌入式,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及等。因为没有MMU单元,所以其多任务的实现需要一定技巧。eCos(embedded Configurable operating system),即嵌入式可配置操作系统。它是一个开放的可配置、可移植、面向深度嵌入式应用的。最大特点是配置灵活,采用,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等。每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求。RTXC是C语言的实时执行体(Real-Time eXecutive in C)的缩写。它是一种灵活的、经过工业应用考验的多任务实时内核,可以广泛用于各种采用8/16位、16/32位、DSP处理器的嵌入式应用场合。中国单片机公共实验室“经过几年的考察,认为比较适合中国的国情后,引入中国市场的”嵌入式两者之一。
新手上路我有疑问投诉建议参考资料 查看晒一晒偶2012新书《嵌入式实时操作系统μC/OS原理与实践》,这个必须看
2010年上操作系统课程的时候,感觉没有一本好的教材,自己刻苦研究,花了很长时间写了一本,2012年2月才正式出版。这本书绝对是大学或研究生水平电子专业学生或工程师的良师益友,绝非粗制滥造,我甚至正在为其配视频,并已经放在网上一些。通过新浪微博就可以和我进行探讨!
这本书可以用在操作系统、嵌入式系统、嵌入式操作系统的教学中!通过OS的学习,不仅掌握OS,还大大的提高C语言,使你成为C专家!
《嵌入式实时操作系统μC/OS原理与实践》
2012.2电子工业出版社出版
1.比较适合入门,对代码的讲解详细充分,
采用逐层深入,反复认证的方法,通过从数据结构到函数代码再到例程的方法比较容易学懂。作者根据教学和项目开发,自己整理的思路。
2.提供容易上手的例程,在WINDOWS下课虚拟运行。有VC下的工程文件,可以在VC下调试,单步运行。代码可在网站下载或向我要!
3.该书事件管理、消息管理及内存管理代码解释也很详细深入。因此不止是入门,包含了操作系统代码作者的内容。
4.内容充分而价格便宜,纸质比较好(请相信电子工业出版社),书很舒服。
5.网上搜索,该书提供了视频教程(正在进行中,现在是到2.4)。
感兴趣的可以在电子工业出版社网站
下载该书的例程和PPT都可以在本博客的置顶贴下载哦!这里就不再给链接了!有VC下的仿真例程和15个学时的实验可以下载,优酷和土豆网上有视频哦,另外如果选择亮点STM32开发板,就有全套的UCOS在STM32下的例程学习了,就更好了!
论坛上有人问这本书和其他书比较的优势,我的回复是:
1.源代码是2.91的,在VC下可单步调试,这个比贝贝的学习环境要好。这本书有售后,就在我们的QQ群和论坛,可以到置顶贴找到哈!
2.书是老师自己根据教学经验编写的,本来教学用的贝贝翻译的书,效果不好书又太贵。不适合学习。这个同学们都这么放映,呵呵。
3.书中源代码解释详细,适合学过点C语言的同学读,门槛不高。很多读者放映书说的比较其他书详细。例如TCB就绪链表和空闲链表,ECB的相关数据结构都以图形方式给出,然后代码解析后还给出流程图,基本上每个重要的函数都有解释和流程图,这个其他书是没有的。
4.例程明白易懂
5.有网上视频
6.有亮点STM32开发板这个硬件平台支持!
7.总之,买了不后悔,欢迎加群,QQ群也在置顶贴有哈!
另外我虔诚的说:这本书还是学C语言的好书!MY GOD!
更重要的是,书的作者也就是我,会一直陪在你身边,帮你学会它!还犹豫什么,做我的粉丝呗!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 在c语言中是什么意思 的文章

 

随机推荐