2015-10-28 3 views
1

Я пытаюсь выполнить руководство по созданию Watchfaces, но я застрял. Я скопировал код из вики, так что не должно быть никаких ошибок вообще, но я получаю эту ошибку при компиляцииПроблемы с функцией PBL_IF_ROUND_ELSE

error: implicit declaration of function 'PBL_IF_ROUND_ELSE' [-Werror=implicit-function-declaration]

Я пытался Google, но я не мог найти что-нибудь полезное. Это код

#include <pebble.h> 

static Window *s_main_window; 
static TextLayer *s_time_layer; 

static void update_time() { 
    // Get a tm structure 
    time_t temp = time(NULL); 
    struct tm *tick_time = localtime(&temp); 

    // Write the current hours and minutes into a buffer 
    static char s_buffer[8]; 
    strftime(s_buffer, sizeof(s_buffer), clock_is_24h_style() ? "%H:%M" : "%I:%M", tick_time); 

    // Display this time on the TextLayer 
    text_layer_set_text(s_time_layer, s_buffer); 
} 

static void tick_handler(struct tm *tick_time, TimeUnits units_changed) { 
    update_time(); 
} 

static void main_window_load(Window *window) { 
    // Get information about the Window 
    Layer *window_layer = window_get_root_layer(window); 
    GRect bounds = layer_get_bounds(window_layer); 

    // Create the TextLayer with specific bounds 
    s_time_layer = text_layer_create(
     GRect(0, PBL_IF_ROUND_ELSE(58, 52), bounds.size.w, 50)); 

    // Improve the layout to be more like a watchface 
    text_layer_set_background_color(s_time_layer, GColorClear); 
    text_layer_set_text_color(s_time_layer, GColorBlack); 
    text_layer_set_text(s_time_layer, "00:00"); 
    text_layer_set_font(s_time_layer, fonts_get_system_font(FONT_KEY_BITHAM_42_BOLD)); 
    text_layer_set_text_alignment(s_time_layer, GTextAlignmentCenter); 

    // Add it as a child layer to the Window's root layer 
    layer_add_child(window_layer, text_layer_get_layer(s_time_layer)); 
} 

static void main_window_unload(Window *window) { 
    // Destroy TextLayer 
    text_layer_destroy(s_time_layer); 
} 


static void init() { 
    // Create main Window element and assign to pointer 
    s_main_window = window_create(); 

    // Set handlers to manage the elements inside the Window 
    window_set_window_handlers(s_main_window, (WindowHandlers) { 
    .load = main_window_load, 
    .unload = main_window_unload 
    }); 

    // Show the Window on the watch, with animated=true 
    window_stack_push(s_main_window, true); 

    // Make sure the time is displayed from the start 
    update_time(); 

    // Register with TickTimerService 
    tick_timer_service_subscribe(MINUTE_UNIT, tick_handler); 
} 

static void deinit() { 
    // Destroy Window 
    window_destroy(s_main_window); 
} 

int main(void) { 
    init(); 
    app_event_loop(); 
    deinit(); 
} 

Я использую CloudPebble SDK.

ответ

1

Я получил его, PBL_IF_ROUND_ELSE работает только с 3.X SDK (я использовал 2.X).

0

Замените «PBL_IF_ROUND_ELSE (58, 52)» на 0. Это должно сделать трюк. Предположим, вы пытаетесь запустить эту программу в версии aplite?

1

"PBL_IF_ROUND_ELSE (58, 52)" работает только с галькой времени или SDK3.

Вы можете заменить «PBL_IF_ROUND_ELSE (58, 52)» с диапазоном от 0 до 100. 0 означает, что это будет в верхней части экрана. 100 означает, что он будет в нижней части экрана.

Смежные вопросы