静态声明遵循非静态声明?

时间:2017-05-05 14:51:33

标签: c

我知道它基本但我不熟悉C而且我无法理解这个主题的答案。

C文件中我有这个功能:

void uart_event_handle(app_uart_evt_t * p_event)
{
}
    static void uart_init(void)
    {
    }

    void initialize()
    {
       uart_init();
    }

静态函数uart_init()在一些示例程序main.c中,我试图把它放在另一个C文件(这个)中

只有在我致电:uart_init();时才会发生错误。否则就不会发生。

1 个答案:

答案 0 :(得分:0)

声明函数static使其在翻译单元外部不可见。这类似于在类中声明私有字段,因为static"隐藏"所有其他文件的功能。

这使您可以在其他文件中定义具有相同名称的新函数,而无需担心名称冲突。同时,static使得无法从定义它的.c文件外部调用该函数。

您的示例提供了一个用于创建静态函数的用例:initialize成为" public"的一部分。该库的界面,而uart_init仍然隐藏。