Contiki 3.0声明setreg()
为static
,在早期版本中不是static
。我需要访问文件外部的函数来执行setreg(CC2420_MDMCTRL0,0)
。 (https://github.com/contiki-os/contiki/blob/master/dev/cc2420/cc2420.c#L392)
从函数原型中删除static
关键字是否合适?
处理此类案件的标准做法是什么?
答案 0 :(得分:0)
我不熟悉该特定代码,但如果声明某个函数static
,则表示它在translation unit之外不可见。
我想该软件的作者有充分理由隐藏setreg
功能。你应该问他们为什么。
我想他们希望您调用一些公共函数(例如cc2420_set_cca_threshold
)来调用内部setreg
。显然,大多数这样的功能都是锁定&使用GET_LOCK
&解锁某些内容RELEASE_LOCK
。
从函数原型中删除static关键字是否合适?
不,这可能是非常错误的
处理此类案件的标准做法是什么?
花费很多时间来了解该特定软件,研究其文档和源代码,了解编码器使用的隐式不变量,并遵循它们。
(盲目地弄乱一些类似操作系统的代码是灾难的必然方法;如果你做错了事情,你甚至可能会破坏你的硬件)