2014-09-29 75 views
3

剛開始開發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(); 
} 

我的問題是這樣的:

什麼是使用非靜態VS靜態變量和函數的含義是什麼?

我試圖找到Pebble開發者網站上的信息,但靜態和非靜態的例子似乎沒有太多的一致性,我沒有找到一個很好的官方指導方針。

回答

9

它與聯動知名度。簡而言之,global標記爲static的符號不會從其定義的translation unit(源文件)中導出。這意味着如果項目中有多個源文件,如果在一個文件中聲明全局變量或函數static,則該變量或功能不能被「看到」或從任何其他源文件中使用。

這是(或應該)基本的C知識,與Pebble沒有什麼特別的關係。

+1

感謝澄清 - 回答了我的問題。我有一種感覺,這是基本的C知識,但我不確定它是否可能是與卵石發展有關的任何特定模式。 – Jaran 2014-09-29 11:33:06