简体   繁体   English

C ++,预处理器语句

[英]C++, pre-processor statement

有人可以解释一下这句话的作用吗?

#define CONST_SIG (void (*) () ) 1

This statement defines CONST_SIG to be 1 cast into a pointer to a function that gets no parameters and returns void . 此语句将CONST_SIG定义为1 CONST_SIG转换为指向函数的指针,该函数不获取任何参数并返回void This may be useful if you have a pointer to a function and you perhaps test it for truthness, then CONST_SIG will be true. 如果你有一个指向函数的指针并且你可能测试它的真实性,那么这可能很有用,那么CONST_SIG将是真的。

You can try the cdecl program, which is available in many linux distributions, for "English translation" of C declarations. 您可以尝试cdecl程序,该程序可在许多Linux发行版中获得,用于C cdecl的“英语翻译”。 Example output in this instance: 此实例中的示例输出:

cdecl> explain (void (*) () )
cast unknown_name into pointer to function returning void

Side-note: The reason it says "unknown_name" is because our pointer has no name. 旁注:它说“unknown_name”的原因是因为我们的指针没有名称。 To name it, for example, "p", would look like this: (void (*p) () ) . 举个例子,“p”,如下所示: (void (*p) () )

您可以将CONST_SIG传递给需要函数指针的函数,并将值1视为此函数指针的特殊值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM