【问题标题】:Typedef an already defined functiontypedef 一个已经定义的函数
【发布时间】:2017-04-27 18:12:34
【问题描述】:

我正在实现一些低级的东西,需要“typedef”许多系统(Windows)功能。例如,这是一个测试函数,我想为钩子键入定义:

BOOL WINAPI WindowsFunction(Param1: DWORD, Param2:DWORD, Param3:DWORD);

Typedef 应该是:

typedef BOOL (WINAPI *TWindowsFunction)(Param1: DWORD, Param2:DWORD, Param3:DWORD);

这对于一些函数来说是可以的,但如果我想为几十个函数执行上述操作,是否有一个快捷方式(如“魔术#define”)可以让我免于复制几乎确切的函数声明再次?像这样的“魔法”:

#define TYPEDEF_FUNCTION(WindowsFunction....)

谢谢!

【问题讨论】:

  • 1) 这不是有效的 C 语法。 2) 为什么需要所有这些 typedef?
  • 我认为你需要退后一步,重新定义问题
  • 这不是有效的 C++ 语法,类型和参数名称之间没有':'。
  • 对不起,我把 Pascal 和 C 混在一起了! :(
  • 删除 C 标签作为接受的答案,OP 想要的,不适用于 C

标签: c++ c


【解决方案1】:

C++11 的decltypecan be used this way,可以是typedefusing

typedef decltype(&WindowsFunction) TWindowsFunction;

或:

using TWindowsFunction = decltype(&WindowsFunction);

【讨论】:

  • 哇!我正是这个意思!非常感谢。你让我开心:)
猜你喜欢
  • 2011-07-06
  • 2022-08-02
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多