2014-02-20 88 views
1

这是一个语法问题。我碰到线:'void(* old_sigint_handler)(int)'是什么?

void (*old_sigint_handler)(int); 

而我不知道它在做什么。这看起来像是没有变量名称的三种类型的连接。我希望澄清!

+0

函数指针,以接受一个'int'并返回'功能void' – user2485710

+0

它的指针,需要一个'int'说法,也没有明确的返回功能。 [CDECL(http://cdecl.org/)是一个很好的资源,以澄清这种声明 – simonc

+0

的是在main方法的中间虽然。 – user2316667

回答

3
void (*old_sigint_handler)(int); 

这定义old_sigint_handler是一个指针,指向这需要一个int并返回void,即,没有值的函数。各地old_sigint_handler的括号是必需的还有这里的以下内容:

void *old_sigint_handler(int); 

声明的函数old_sigint_handler这需要一个int并返回一个指针void类型。这是因为C中的优先规则。括号裹紧indentifier old_sigint_handler*使其成为一个函数而不是指针的功能。阅读这个来精神分析复杂的C声明 - Clockwise/Spiral Rule

+0

你是低调者,我希望你能教我做错了什么,而不仅仅是低调。没有意义。 – ajay

1

是一个函数指针,一个函数签名void (int)

1

那是名为old_sigint_handler变量声明一个变量,可容纳一个函数指针,以接受一个int并没有返回值(空)的功能。

1

它的命名函数指针的声明old_sigint_handler采用单个int和没有返回。

1

这是一个函数指针声明old_sigint_handler函数,该函数需要一个int并返回void

3

利用cdecl知道它是什么样的声明完全一样。它是C -> English

declare old_sigint_handler as pointer to function (int) returning void

+0

还,链接是有用 –

+0

呀,伟大的链接。 – user2316667

相关问题