有精通C语言的吗?帮我解释下下面这条语句。

Python09

有精通C语言的吗?帮我解释下下面这条语句。,第1张

u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000)))

这句话可以这么理解:正常应该这么写:u8 USART_RX_BUF[USART_REC_LEN]

u8 是类型,指 8位无符号型。后面是数组名及数组长度,这都好理解。

难理解的是__attribute__ ((at(0X20001000))),这个应该是每个C编译器对标准语言的扩充,及强制指定数组的起始内存地址。编译语法可能是: <类型>变量名<[数组长度]>[扩充编译属性]

你是不是说C语言中的绝对定位??

在C语言的头文件中你如果这么写。

volatile unsigned char tmpdata @0x30//tmpdata 寄存器定位在地址0x30上

//因为是unsigned char型数据,所以只有8位。

volatile bit tmpBit1 @ tmdata*8+1//tmpdata第1位定义成tmBit1

volatile bit tmpBit2 @ tmdata*8+2//tmpdata第2位定义成tmBit1

…………

volatile bit tmpBit8 @ tmdata*8+8//tmpdata第8位定义成tmBit8

那么在程序里你可以直接用于位操作

如:tmpBit2=1//tmpBit的第2位置1

tmpBit4=0//tmpBit的第4位清0

一般我们在xcode里面配置包含工程目录下头文件的时候,都要关联着相对路径和绝对路径,如果只是自己用这个项目,用绝对路径的问题不大,但是如果你把工程发给别人,别人就要在改这个绝对路径,这时候绝对路径的缺点立马出现。

所以在修改User Header Search Paths这个选项的时候使用

"$(SRCROOT)/当前工程名字/需要包含头文件所在文件夹"

将上面的双引号里面的字符串拷贝之后,你会发现这个“$(SRCROOT)”,会自动变成当前工程所以的目录。

这样就可以了,发给别人,别人也不用在去修改路径了。