【问题标题】:Static vs. nonstatic functions in Pebble appsPebble 应用程序中的静态与非静态函数
【发布时间】:2014-09-29 11:26:26
【问题描述】:

刚开始为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();
}

非静态版本

#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();
}

我的问题是这样的:

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

我试图在 Pebble 开发者网站上查找信息,但静态和非静态示例的使用似乎没有太大的一致性,而且我未能找到一个好的官方指南。

【问题讨论】:

    标签: c pebble-watch


    【解决方案1】:

    它与链接可见性有关。简而言之,标记为static全局 符号不会从它定义的translation unit(源文件)中导出。这意味着如果您的项目中有多个源文件,如果您声明一个全局变量或函数static 在一个文件中,该变量或函数不能从任何其他源文件“看到”或使用。

    这是(或应该是)基本的 C 知识,与 Pebble 没有什么特别的关系。

    【讨论】:

    • 感谢您的澄清 - 回答了我的问题。我感觉这是基本的 C 知识,但是我不确定它是否可能是与 Pebble 开发相关的任何特定模式。
    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多