奇怪的NOOP惯例?

Cad*_*oux 4 c pebble-watch

我正在浏览一个模板(在cloudpebble.net上),用于构建Pebble表盘并遇到以下代码:

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

}
Run Code Online (Sandbox Code Playgroud)

我指出的线路用于什么目的?

Cai*_*von 10

这些行的唯一目的是使编译器警告静音-Wunused-parameter.请注意,这些变量不会在函数体中的任何位置使用; 将它们转换为void基本上告诉编译器这是故意的.

  • @StileCrisis,这在C++中是合法的,但不在C中.参见[this question](http://stackoverflow.com/questions/8776810/parameter-name-omitted-c-vs-c). (3认同)
  • 在这种情况下,参数`t`*实际上是*,所以`(void)t;`行似乎是一个错误. (3认同)