Why is the usage of printf wrong in this program?
===

I saw this sample code in an answer to http://stackoverflow.com/questions/840501/how-do-function-pointers-in-c-work


    #import <stdlib.h>
    #define MAX_COLORS  256
    
    typedef struct {
        char* name;
        int red;
        int green;
        int blue;
    } Color;
    
    Color Colors[MAX_COLORS];
    
    
    void eachColor (void (*fp)(Color *c)) {
        int i;
        for (i=0; i<MAX_COLORS; i++)
            (*fp)(&Colors[i]);
    }
    
    void printColor(Color* c) {
        if (c->name)
            printf("%s = %i,%i,%i\n", c->name, c->red, c->green, c->blue);
    }
    
    int main() {
        Colors[0].name="red";
        Colors[0].red=255;
        Colors[1].name="blue";
        Colors[1].blue=255;
        Colors[2].name="black";
    
        eachColor(printColor);
    }

The code returns the following error:

    test.c: In function ‘printColor’:
    test.c:21: warning: incompatible implicit declaration of built-in function ‘printf’

