嵌入式C 语法求解
答案:3 悬赏:10 手机版
解决时间 2021-02-22 20:41
- 提问者网友:箛茗
- 2021-02-22 15:22
UINT16 f_index(aktuell, wert, maxzahl)
UINT16 far aktuell[];
UINT16 wert;
UINT8 maxzahl;
{
UINT8 i;
for(i=0;i {
if((wert&aktuell[0])==aktuell[i+1]) return i;
}
return(0);
}
德国佬的代码,其他代码都正常,但这个函数定义看不懂,谁能解析下这种写法?
我想问前面4行,为何与常规c语言函数定义语法不同,能编译同过,但我在vc里面试了这种函数定义的语法,提示错误
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-02-22 16:02
你是指函数名和括号里的那些变量? 这是K&R C中的参数声明方式,这种旧的声明方式在ANSI C中依然支持,但是不建议继续使用它。
它等价于UINT16 f_index(UINT16 far aktuell[], UINT16 wert, UINT8 maxzahl maxzahl){}。 前面朋友答得不太对。
全部回答
- 1楼网友:妄饮晩冬酒
- 2021-02-22 17:50
这个括号里面的写法是C语言局部程序块,之所以采用这种局部程序块,原因是:
1:你可以在局部程序块中说明一些变量,这种变量被称为局部变量,它们只能在局部程序块的开始部分说明,并且只在说明它的局部程序块中有效;
2:如果局部变量与局部程序块以外的变量重名,则前者优先于后者。
说白了就是为了保护一些括号内的变量操作.
- 2楼网友:想偏头吻你
- 2021-02-22 17:13
刚开始学的时候,学习用汇编程序写你会对硬件的理解更深些,
当你对硬件比较熟悉的时候,编写这些程序就简单了。你再用c语言写这些程序的时候就会发现用c写的程序是多么的简单,简洁,一目了然。
做嵌入式你要对很多芯片熟悉,除了微控制器,它的很多外围芯片很重要,不过对于这些芯片的应用,一般它的datasheet会有介绍,编写的程序只要跟对着它的时序就可以了。
你说你是做芯片的,也要用到编程,那应该是应用这些芯片吧?简单的就是读写芯片的时序,复杂的就是写这些芯片的驱动。
很多人学习嵌入式选择学习arm芯片,但单片机就是基础。单片机学好了,arm上手就快多了。
推荐一本书:8051徽控制器和嵌入式系统,机械工业出版社,是一本外文书,有严隽永翻译的中文版
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯