首页 > 解决方案 > 像宏一样的函数作为参数传递。编译器错误来了

问题描述

当我将宏之类的函数作为参数传递给另一个声明为函数指针参数的函数时。我无法运行出现编译时错误的代码。

#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

标签: cfunctioncompiler-errors

解决方案


“函数像宏”是指宏函数一样工作。这并不意味着它是一个函数。你不能传递这样的宏。


推荐阅读