微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ccs中c语言的几个问题,希望dx不吝赐教,先3q了!

ccs中c语言的几个问题,希望dx不吝赐教,先3q了!

时间:10-02 整理:3721RD 点击:
struct SCIFFRX_BITS { // bits description
Uint16 RXFFIL:5; // 4:0 Interrupt level
Uint16 RXFFIENA:1; // 5 Interrupt enable
Uint16 RXFFINTCLR:1; // 6 Clear INT flag
Uint16 RXFFINT:1; // 7 INT flag
Uint16 RXFIFST:5; // 12:8 FIFO status
Uint16 RXFIFORESET:1; // 13 FIFO reset
Uint16 RXOVF_CLR:1; // 14 Clear overflow
Uint16 RXFFOVF:1; // 15 FIFO overflow

};

union SCIFFRX_REG {
Uint16 all;
struct SCIFFRX_BITS bit;
};
用SCIFFRX_REG.all就可以把SCIFFRX_BITS里的所有位都引用吗??
在c语言里有这样的介绍吗?
2.Uint32 *Dest = (void *) &PieVectTable; 其中的void *是什么意思?
3, cp[x]= (char * ) malloc (10000,1)
if (cp[x]= = (char * ) NULL)
break
这两个语句分别是什么意思 ?不懂malloc, calloc以函数及NULL到底是不是就是0啊

同问
个人感觉是说DEST 和PieVectTable 两个变量指针是互动赋值
亦即操作一个另一个也操作了

1. 这个看C语言的union的介绍就应该明白了。 union的每个成员共享同样的内存,也就是把同一个内存的内容用各种形式来表达。

2. void * 表示指向空类型的指针,不知道为什么这句话不写成:Uint32 *Dest = (Uint32 *) &PieVectTable;

3. malloc和calloc都是动态分配内存的函数,google一下应该不难找到介绍。NULL就是0,一个指针如果指向的地址是0的话,那么这个指针就是空指针。
你可以在stdio.h之类的头文件中找到类似下面的定义:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

用SCIFFRX_REG.all就可以把SCIFFRX_BITS里的所有位都引用吗??
在c语言里有这样的介绍吗?-----------------所有位都可以引用,也可以引用局部位。这在C语言里的共用体和结构体那快,还得好好研究啊,我是头都搞昏了的研究了几天。

2.Uint32 *Dest = (void *) &PieVectTable; 其中的void *是什么意思?
----这是指针部分的知识。PieVectTable是一个名字,同时也代表一个首地址,跟C里的数组名代表数组首地址是一样的。这句话的概念是定义了一个32位的无符号类型的指针变量Dest,Dest指向PieVectTable首地址。因为PieVectTable是一个指针数组。想要学好,请仔细精读C里的指针部分知识
3, cp[x]= (char * ) malloc (10000,1)
if (cp[x]= = (char * ) NULL)
break
这两个语句分别是什么意思 ?不懂malloc, calloc以函数及NULL到底是不是就是0啊
------------malloc (10000,1)是一个宏替换函数,它返回的值要看你具体定义的这个宏是什么。然后这句话就好理解了。请精读C的宏函数替换部分。

2. void * 表示指向空类型的指针,不知道为什么这句话不写成:Uint32 *Dest = (Uint32 *) &PieVectTable; ----------------------------这样定义就出问题了

不知道这样定义出了什么问题?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top