This code was working fine, but at some point I started getting these errors. Any help appreciated. The errors are confusing as they don't even to seem to relate to real line numbers, e.g. if error says some variable not declared on some line I go to that line, that variable isn't even there.
here is header and c file and then in the end main file.
header:
#ifndef G_LINKED_LIST /* Include guard */
#define G_LINKED_LIST
//
// Linked list node
// Containes data and a pointer to the next node in the list.
//
struct LL_node {
int data;
struct LL_node* next;
};
// Kill program and print error message
void die(const char *message);
// Get linked list length, number of nodes in the list.
int LL_Length(struct LL_node* head);
// Create a demo linked list and return pointer to it.
struct LL_node* BuildTestList(void);
// Insert node at the front of linked list.
void InsertAtFront(struct LL_node** headRef, int data);
// Dump linked list contents.
void PrintList(struct LL_node* headPtr);
#endif
c file
//
//
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "GLinkedList.h"
// Print linked list contents
void PrintList(struct LL_node* headPtr)
{
// Get pointer to the start of the linked list.
struct LL_node *temp = headPtr;
printf("About to dump linked list contents\n");
// Iterate the linked list.
while (temp != NULL)
{
printf("List node value: %d\n",temp->data);
temp = temp->next;
}
}
// Kill program and print error message
void die(const char *message)
{
if(errno) {
perror(message);
} else {
printf("ERROR: %s\n", message);
}
exit(1);
}
//
// Given a linked list head pointer, compute
// and return the number of nodes in the list.
//
int LL_Length(struct LL_node* head) {
struct LL_node* current = head;
int count = 0;
while (current != NULL) {
count++;
current = current->next;
}
return count;
}
//
// Build the list {1, 2, 3} in the heap and store
// its head pointer in a local stack variable.
// Returns the head pointer to the caller.
//
struct LL_node* BuildTestList() {
//
// Create three nodes on the heap :
//
struct LL_node* first;
struct LL_node* second;
struct LL_node* third;
first = malloc(sizeof(struct LL_node));
if(first == NULL)
die("Memory allocation failure.");
second = malloc(sizeof(struct LL_node));
if(second == NULL)
die("Memory allocation failure.");
third = malloc(sizeof(struct LL_node));
if(third == NULL)
die("Memory allocation failure.");
//
// Chain them
//
first->data = 1;
first->next = second;
second->data = 2;
second->next = third;
third->data = 3;
third->next = NULL;
// Return pointer to first element
return first;
}
//
// Takes a list and a data value.
// Creates a new link with the given data and pushes
// it onto the front of the list.
// The list is not passed in by its head pointer.
// Instead the list is passed in as a "reference" pointer
// to the head pointer -- this allows us
// to modify the caller's memory.
//
void InsertAtFront(struct LL_node** headRef, int data)
{
struct LL_node* newNode = malloc(sizeof(struct LL_node));
if(newNode==NULL)
die("Memory allocation failure.");
newNode->data = data;
newNode->next = *headRef; // The '*' to dereferences back to the real head
*headRef = newNode; // ditto
}
main
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "GLinkedList.h"
int main()
{
int dummy;
// Create a test linked list
struct LL_node *headPtr;
headPtr = BuildTestList();
PrintList(headPtr);
// Try to insert element at front of the list
InsertAtFront(&headPtr, 55);
// Try to insert element at front of the list
InsertAtFront(&headPtr, 33);
PrintList(headPtr);
// wait
scanf("%d",&dummy);
return 0;
}
Erros:
------ Rebuild All started: Project: LinkedLists, Configuration: Debug Win32 ------
main.c
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\main.c(25): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files\microsoft visual studio 11.0\vc\include\stdio.h(290) : see declaration of 'scanf'
GLinkedList.c
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(21): warning C4210: nonstandard extension used : function given file scope
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(21): error C2143: syntax error : missing ';' before '{'
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(23): error C2065: 'message' : undeclared identifier
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(23): warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int'
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(23): warning C4024: 'perror' : different types for formal and actual parameter 1
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(25): error C2065: 'message' : undeclared identifier
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(35): error C2143: syntax error : missing ';' before 'type'
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(39): error C2143: syntax error : missing ';' before 'type'
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(40): error C2065: 'current' : undeclared identifier
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(40): warning C4047: '!=' : 'int' differs in levels of indirection from 'void *'
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(41): error C2065: 'count' : undeclared identifier
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(42): error C2065: 'current' : undeclared identifier
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(42): error C2223: left of '->next' must point to struct/union
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(45): error C2065: 'count' : undeclared identifier
c:\users\g\documents\visual studio 2012\projects\linkedlists\linkedlists\glinkedlist.c(45): warning C4098: 'PrintList' : 'void' function returning a value
Generating Code...
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
Any help appreciated as I am really lost. It is VS 2012