C ++,预处理器语句

时间:2012-01-24 21:49:08

标签: c++ c-preprocessor

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

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

3 个答案:

答案 0 :(得分:3)

此语句将CONST_SIG定义为1强制转换为指向函数的指针,该函数不获取任何参数并返回void。如果你有一个指向函数的指针,并且你可能测试它的真实性,那么这个可能很有用,那么CONST_SIG就是真的。

您可以尝试使用许多Linux发行版中提供的cdecl程序进行C语句的“英语翻译”。此实例中的示例输出:

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

旁注:它说“unknown_name”的原因是因为我们的指针没有名称。举例来说,“p”的名称如下所示:(void (*p) () )

答案 1 :(得分:3)

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

答案 2 :(得分:1)