Pebble应用程序中的静态与非静态功能

Jar*_*ran 3 c pebble-watch

刚刚开始为Pebble应用程序开发 - 并且还回到我已经多年未维护的基本C技能,我试图了解这些Pebble应用程序的基本结构.

我确实知道静态和非静态之间的区别,但是如果有人能帮助解释在这种情况下对我的应用程序的影响,那将非常高兴.我在下面粘贴了最小化的示例代码,其中显示了Pebble应用程序在两种情况下的结构.

静态版

#include <pebble.h>

static Window *window;

static void handle_init(void) {
    window = window_create();
    window_stack_push(window, true);

}

static void handle_deinit(void) {
    window_destroy(window);
}

int main(void) {
    handle_init();
    app_event_loop();
    handle_deinit();
}
Run Code Online (Sandbox Code Playgroud)

非静态版本

#include <pebble.h>

Window *window;

void handle_init(void) {
    window = window_create();
    window_stack_push(window, true);

}

void handle_deinit(void) {
    window_destroy(window);
}

int main(void) {
    handle_init();
    app_event_loop();
    handle_deinit();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

使用非静态变量和静态变量和函数的含义是什么?

我试图在Pebble开发者网站上找到信息,但静态和非静态的例子似乎没有太多的一致性使用,我找不到一个好的官方指南.

Som*_*ude 9

它与链接可见性有关.简而言之,标记的全局符号static不会从其定义的转换单元(源文件)中导出.这意味着如果项目中有多个源文件,如果static在一个文件中声明全局变量或函数,则该变量或函数可以不被"看到"或从任何其他源文件中使用.

这是(或应该是)基本的C知识,与Pebble无关.