2013-04-30 4 views
4

Я просматривал шаблон (в cloudpebble.net) для строительства Pebble циферблата и наткнулся на этот код:Странное соглашение NOOP?

void handle_minute_tick(AppContextRef ctx, PebbleTickEvent *t) { 
    (void)t; // NOOP? 
    (void)ctx; // NOOP? 

    display_time(t->tick_time); 
} 


void handle_init(AppContextRef ctx) { 
    (void)ctx; // NOOP? 

    window_init(&window, "Big Time watch"); 
    window_stack_push(&window, true); 
    window_set_background_color(&window, GColorBlack); 

    resource_init_current_app(&APP_RESOURCES); 

    // Avoids a blank screen on watch start. 
    PblTm tick_time; 

    get_time(&tick_time); 
    display_time(&tick_time); 
} 


void handle_deinit(AppContextRef ctx) { 
    (void)ctx; // NOOP? 

    for (int i = 0; i < TOTAL_IMAGE_SLOTS; i++) { 
    unload_digit_image_from_slot(i); 
    } 

} 

Какую цель сделать линии я указал служить?

+3

Мое предположение было бы только для того, чтобы избежать переменных не используемых предупреждений. – John3136

+1

См. Http://stackoverflow.com/questions/3599160/unused-parameter-warnings-in-c-code – jarmod

ответ

10

Единственная цель этих строк - отключить предупреждения компилятора, такие как -Wunused-parameter. Обратите внимание, что эти переменные не используются нигде в теле функции; литье их в пустоту по существу говорит компилятору, что это намеренно.

+0

Обратите внимание, что другой способ (лучше?) - это удалить их имена из первой строки функции, например: 'void handle_minute_tick (AppContextRef, PebbleTickEvent *)' – StilesCrisis

+3

@StilesCrisis, это законно в C++, но не в C. См. [этот вопрос] (http://stackoverflow.com/questions/8776810/parameter-name-omitted- с-против-с). – Cairnarvon

+3

В этом случае используется параметр 't' * *, поэтому строка' (void) t; 'представляется ошибкой. – caf

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

  • Нет связанных вопросов^_^