【问题标题】:Please explain the following piece of code. I'm a beginner so please help me understand [duplicate]请解释以下代码。我是初学者,所以请帮助我理解[重复]
【发布时间】:2013-10-08 14:15:04
【问题描述】:
typedef long (*GuiFunc) (int, int, int, unsigned short*, long, long);

请帮我理解上面这行代码

【问题讨论】:

  • 你从哪里得到的?
  • 它是一个指向函数的指针,它接受 6 个参数并返回一个 long int。
  • 跟进 hackks 的问题,您似乎正在尝试使用超出您当前理解水平的东西。考虑看看一个好的 C 教程。
  • 非常感谢大家的及时输入。所以我知道typedef名称是GuiFunc。所以每当我需要定义一个函数指针时,我会简单地写: GuiFunc functionPointer = &somefunction;我现在知道了。谢谢您的帮助。你们太棒了。
  • 你为什么称它为复制品? OP 看过那行代码,但他不明白,因此他不知道它是关于函数指针的,你不觉得吗?

标签: c function-pointers typedef


【解决方案1】:
typedef long (*GuiFunc) (int, int, int, unsigned short*, long, long);  

定义了新类型GuiFunc.,它可以声明一个函数指针,它接受6个参数int, int, int, unsigned short*, long, longreturns long

假设你有这样的功能

long foo(int, int, int, unsigned short*, long, long)
{

}

如果你声明

Guifunc callback; //declare a varaible of type Guifunc
callback=foo;

然后你可以像这样调用 foo 函数long x=callback(6parameters);

【讨论】:

    【解决方案2】:

    你在这里定义了一个新类型。

    这里的新类型是函数指针。

    函数指针有 6 个输入参数

    【讨论】:

      【解决方案3】:

      您定义了一个类型GuiFunc,它是一个指针(即(*GuiFunc) 构造)指向一个函数(括号中的内容),它接受3 个ints,一个指向@987654324 的指针@, 两个longs 并返回一个long。

      【讨论】:

      • 我从课本知识中知道:typedef int dog;狗柜台;计数器 = 5;事情就是这样。现在这行代码是否意味着我正在使用函数指针代替 long?
      • 不,这是用于函数指针的 typedef 的特殊语法。 C 语言的声明不是很规则。
      猜你喜欢
      • 2014-01-15
      • 2023-01-22
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 2021-02-05
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多