“typedef void(* task)()”有什么作用?

时间:2013-02-09 12:42:12

标签: c++ typedef

这个问题在这里得到部分答案What does "typedef void (*Something)()" mean

但答案对我来说并不完全清楚。

如果我写

typedef void (*task) ();

它是如何扩展的?

thread_pool(unsigned int num_threads, task tbd) {
      for(int i = 0; i < num_threads; ++i) {
        the_pool.push_back(thread(tbd));
      }
    }

它看起来像这样吗?

thread_pool(unsigned int num_threads, (*task) () tbd) {
      for(int i = 0; i < num_threads; ++i) {
        the_pool.push_back(thread(tbd));
      }
    }

可能不是,因为它是语法错误。我希望你能为我解决问题。

代码示例来自http://www.thesaguaros.com/openmp-style-constructs-in-c11.html

1 个答案:

答案 0 :(得分:2)

就是这样:

thread_pool(unsigned int num_threads, void (*tbd) ())

也就是说,类型是函数签名,唯一的“单词”是“void”。 typedef名称“task”在此示例中消失,因为我们不再使用typedef。