我可以比较函数指针和函数是否相等吗?

标签 c function-pointers c99

这是有效的 C99 代码吗? (我想我是在问它是否便携)

void test(void){
return;
}

void (*fp)(void) = test;

if (fp == test){ <--- This line
    printf("Success\n");
}

我只收集相同类型的指针可以相互比较,所以也许我的问题是像“test”这样的函数名称是否只是指针别名?或者也许有人可以告诉我我的问题比我更好:)

最佳答案

代码是有效的 ANSI C。

实际上,代码中的函数名称(例如 test)会自动转换为指向函数的指针。

可以将test改为&test,结果是一样的。

关于我可以比较函数指针和函数是否相等吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57487488/

相关文章:

c - 如何创建在多个接口(interface)上发送/接收 UDP 广播的服务

c - typedef 一个函数接口(interface)(不是函数指针)

c++ - 重构指向某种形式模板的函数指针

c - 警告 C4047 : '=' : 'char' differs in levels of indirection from 'char *'

c - 如何声明函数原型(prototype)及其参数声明列表?

c - 如果在这段代码中直接将变量 i 传递给线程会发生什么?

c - For 循环运行的时间比指定的时间长?

c++ - 通用成员函数指针

C float 0x1.fp3

c - 为什么指针在传递给函数时在某些情况下表现不同?