I keep getting an error when working with pointers in C

I’m writing a program in C which has a container (linear linked list) which contains char arrays as its data. I’m required to write a function firstItem(container* containerADT) which returns the the struct variable top. I’ve tried writing the firstItem function many times in many different ways and I keep getting the same error. My struct definitions, functions, and error message are below:

Container and Node structs:

typedef struct node
    char* data;
    struct node *next;

typedef struct container
    struct node *top;

firstItem function:

node* firstItem(container* containerADT)
    // returns the top of the passed container
    return containerADT->top;

testing function

printf("\nTesting firstItem() on a non-empty container:");
node *firstItem;
firstItem = firstItem(container1);
if (firstItem != NULL && strcmp(firstItem->data, "item 1") == 0)
    printf("\n\tSUCCESS! firstItem() returned the first item in the container.\n");
    printf("\n\tFailed. firstItem() did not return the first item in the container.\n");

error message:

enter image description here

Please note that I was asked to test the firstItem() function so I can’t just access the container’s top variable and that a Makefile was used to compile main.c, container.c, and container.h

>Solution :

The problem is that you have named the variable the same name as the function. The variable then ‘hides’ the definition of the function in the local scope.

node* firstItem = firstItem(container1);

Rename the variable to use another name:

node *first_item = firstItem(container1);
if (first_item != NULL && strcmp(first_item->data, "item 1") == 0) {

Leave a Reply