c - 像宏一样的函数作为参数传递。编译器错误来了
问题描述
当我将宏之类的函数作为参数传递给另一个声明为函数指针参数的函数时。我无法运行出现编译时错误的代码。
#include <stdio.h>
#define print_numbers() (void (0))
void display(void (*p)())
{
for(int i=1;i<=5;i++)
{
p();
}
}
int main() {
void (*p)(int); // void function pointer declaration
printf("The values are :");
display(print_numbers); return 0;
}
错误
prog.c: In function ‘main’: prog.c:16:13: error: ‘print_numbers’ undeclared (first use in this function)
display(print_numbers);
^
prog.c:16:13: note: each undeclared identifier is reported only once for each function it appears in
解决方案
“函数像宏”是指宏像函数一样工作。这并不意味着它是一个函数。你不能传递这样的宏。
推荐阅读
- java - 如何使用 docker compose 中的点设置属性名称?
- mysql - MySQL 服务器版本的错误手册,在第 1 行的“-1%”附近使用正确的语法 LIMIT 18446744073709551615'
- visual-studio - Visual Studio 2019 Linux Docker 容器无法访问 SQL Server(在网络上)
- python - 大型 Pandas 数据集的可视化工作流程
- react-native - 使用 react-native-testing-library 测试警报
- java - 带有列表属性的 hashCode 和 equals
- java - 如何将 if 和 else-if 语句转换为 switch case?
- android - 错误android应用程序上的http请求超时
- amazon-web-services - 从python中对AWS lambda的异步调用获取响应结果
- c++ - 如何从具有专业化的类模板中定义静态成员变量?