访问文件外部的静态函数

时间:2017-02-25 10:39:19

标签: c static

Contiki 3.0声明setreg()static,在早期版本中不是static。我需要访问文件外部的函数来执行setreg(CC2420_MDMCTRL0,0)。 (https://github.com/contiki-os/contiki/blob/master/dev/cc2420/cc2420.c#L392

从函数原型中删除static关键字是否合适? 处理此类案件的标准做法是什么?

1 个答案:

答案 0 :(得分:0)

我不熟悉该特定代码,但如果声明某个函数static,则表示它在translation unit之外不可见。

我想该软件的作者有充分理由隐藏setreg功能。你应该问他们为什么。

我想他们希望您调用一些公共函数(例如cc2420_set_cca_threshold)来调用内部setreg。显然,大多数这样的功能都是锁定&使用GET_LOCK&解锁某些内容RELEASE_LOCK

  

从函数原型中删除static关键字是否合适?

不,这可能是非常错误的

  

处理此类案件的标准做法是什么?

花费很多时间来了解该特定软件,研究其文档和源代码,了解编码器使用的隐式不变量,并遵循它们。

(盲目地弄乱一些类似操作系统的代码是灾难的必然方法;如果你做错了事情,你甚至可能会破坏你的硬件)